// export waves , timer , reltimer , freesides , playersides , queue , bs , income , req , soldiers ; export Setup , playerSettings , AISettings ; starting begin continued ;
   0: CALL 5 0 0
// end ;
   4: END
// export function continued ; var i ; begin
   5: LD_INT 0
   7: PPUSH
   8: PPUSH
// playersides = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
   9: LD_ADDR_EXP 5
  13: PUSH
  14: LD_INT 1
  16: PUSH
  17: LD_INT 2
  19: PUSH
  20: LD_INT 3
  22: PUSH
  23: LD_INT 4
  25: PUSH
  26: LD_INT 5
  28: PUSH
  29: LD_INT 6
  31: PUSH
  32: EMPTY
  33: LIST
  34: LIST
  35: LIST
  36: LIST
  37: LIST
  38: LIST
  39: ST_TO_ADDR
// freesides = [ 7 , 8 ] ;
  40: LD_ADDR_EXP 4
  44: PUSH
  45: LD_INT 7
  47: PUSH
  48: LD_INT 8
  50: PUSH
  51: EMPTY
  52: LIST
  53: LIST
  54: ST_TO_ADDR
// soldiers = [ 0 , 0 ] ;
  55: LD_ADDR_EXP 10
  59: PUSH
  60: LD_INT 0
  62: PUSH
  63: LD_INT 0
  65: PUSH
  66: EMPTY
  67: LIST
  68: LIST
  69: ST_TO_ADDR
// timer = 0 ;
  70: LD_ADDR_EXP 2
  74: PUSH
  75: LD_INT 0
  77: ST_TO_ADDR
// waves = 0 ;
  78: LD_ADDR_EXP 1
  82: PUSH
  83: LD_INT 0
  85: ST_TO_ADDR
// reltimer = 0 ;
  86: LD_ADDR_EXP 3
  90: PUSH
  91: LD_INT 0
  93: ST_TO_ADDR
// queue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  94: LD_ADDR_EXP 6
  98: PUSH
  99: LD_INT 0
 101: PUSH
 102: LD_INT 0
 104: PUSH
 105: LD_INT 0
 107: PUSH
 108: LD_INT 0
 110: PUSH
 111: LD_INT 0
 113: PUSH
 114: LD_INT 0
 116: PUSH
 117: LD_INT 0
 119: PUSH
 120: LD_INT 0
 122: PUSH
 123: EMPTY
 124: LIST
 125: LIST
 126: LIST
 127: LIST
 128: LIST
 129: LIST
 130: LIST
 131: LIST
 132: ST_TO_ADDR
// game_speed = 7 ;
 133: LD_ADDR_OWVAR 65
 137: PUSH
 138: LD_INT 7
 140: ST_TO_ADDR
// playerSettings = [ 0 , 1 , 1 , 0 ] ;
 141: LD_ADDR_EXP 12
 145: PUSH
 146: LD_INT 0
 148: PUSH
 149: LD_INT 1
 151: PUSH
 152: LD_INT 1
 154: PUSH
 155: LD_INT 0
 157: PUSH
 158: EMPTY
 159: LIST
 160: LIST
 161: LIST
 162: LIST
 163: ST_TO_ADDR
// AISettings = [ 0 , 1 , 1 , 0 ] ;
 164: LD_ADDR_EXP 13
 168: PUSH
 169: LD_INT 0
 171: PUSH
 172: LD_INT 1
 174: PUSH
 175: LD_INT 1
 177: PUSH
 178: LD_INT 0
 180: PUSH
 181: EMPTY
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// income = [ 20 , 20 , 20 , 20 , 20 , 20 , 20 , 20 ] ;
 187: LD_ADDR_EXP 8
 191: PUSH
 192: LD_INT 20
 194: PUSH
 195: LD_INT 20
 197: PUSH
 198: LD_INT 20
 200: PUSH
 201: LD_INT 20
 203: PUSH
 204: LD_INT 20
 206: PUSH
 207: LD_INT 20
 209: PUSH
 210: LD_INT 20
 212: PUSH
 213: LD_INT 20
 215: PUSH
 216: EMPTY
 217: LIST
 218: LIST
 219: LIST
 220: LIST
 221: LIST
 222: LIST
 223: LIST
 224: LIST
 225: ST_TO_ADDR
// req = [ [ 10 , 1 , 2 ] , [ 100 , 2 , 3 ] , [ 25 , 1 , 0 ] , [ 25 , 2 , 0 ] , [ 400 , 1 , 0 ] , [ 175 , 2 , 0 ] , [ 10 , 3 , 0 ] , [ 5 , 3 , 0 ] , [ 2 , 3 , 0 ] , [ 400 , 1 , 0 ] , [ 50 , 2 , 0 ] , [ 5 , 3 , 0 ] , [ 50 , 2 , 0 ] , [ 15 , 2 , 0 ] , [ 150 , 2 , 0 ] ] ;
 226: LD_ADDR_EXP 9
 230: PUSH
 231: LD_INT 10
 233: PUSH
 234: LD_INT 1
 236: PUSH
 237: LD_INT 2
 239: PUSH
 240: EMPTY
 241: LIST
 242: LIST
 243: LIST
 244: PUSH
 245: LD_INT 100
 247: PUSH
 248: LD_INT 2
 250: PUSH
 251: LD_INT 3
 253: PUSH
 254: EMPTY
 255: LIST
 256: LIST
 257: LIST
 258: PUSH
 259: LD_INT 25
 261: PUSH
 262: LD_INT 1
 264: PUSH
 265: LD_INT 0
 267: PUSH
 268: EMPTY
 269: LIST
 270: LIST
 271: LIST
 272: PUSH
 273: LD_INT 25
 275: PUSH
 276: LD_INT 2
 278: PUSH
 279: LD_INT 0
 281: PUSH
 282: EMPTY
 283: LIST
 284: LIST
 285: LIST
 286: PUSH
 287: LD_INT 400
 289: PUSH
 290: LD_INT 1
 292: PUSH
 293: LD_INT 0
 295: PUSH
 296: EMPTY
 297: LIST
 298: LIST
 299: LIST
 300: PUSH
 301: LD_INT 175
 303: PUSH
 304: LD_INT 2
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: EMPTY
 311: LIST
 312: LIST
 313: LIST
 314: PUSH
 315: LD_INT 10
 317: PUSH
 318: LD_INT 3
 320: PUSH
 321: LD_INT 0
 323: PUSH
 324: EMPTY
 325: LIST
 326: LIST
 327: LIST
 328: PUSH
 329: LD_INT 5
 331: PUSH
 332: LD_INT 3
 334: PUSH
 335: LD_INT 0
 337: PUSH
 338: EMPTY
 339: LIST
 340: LIST
 341: LIST
 342: PUSH
 343: LD_INT 2
 345: PUSH
 346: LD_INT 3
 348: PUSH
 349: LD_INT 0
 351: PUSH
 352: EMPTY
 353: LIST
 354: LIST
 355: LIST
 356: PUSH
 357: LD_INT 400
 359: PUSH
 360: LD_INT 1
 362: PUSH
 363: LD_INT 0
 365: PUSH
 366: EMPTY
 367: LIST
 368: LIST
 369: LIST
 370: PUSH
 371: LD_INT 50
 373: PUSH
 374: LD_INT 2
 376: PUSH
 377: LD_INT 0
 379: PUSH
 380: EMPTY
 381: LIST
 382: LIST
 383: LIST
 384: PUSH
 385: LD_INT 5
 387: PUSH
 388: LD_INT 3
 390: PUSH
 391: LD_INT 0
 393: PUSH
 394: EMPTY
 395: LIST
 396: LIST
 397: LIST
 398: PUSH
 399: LD_INT 50
 401: PUSH
 402: LD_INT 2
 404: PUSH
 405: LD_INT 0
 407: PUSH
 408: EMPTY
 409: LIST
 410: LIST
 411: LIST
 412: PUSH
 413: LD_INT 15
 415: PUSH
 416: LD_INT 2
 418: PUSH
 419: LD_INT 0
 421: PUSH
 422: EMPTY
 423: LIST
 424: LIST
 425: LIST
 426: PUSH
 427: LD_INT 150
 429: PUSH
 430: LD_INT 2
 432: PUSH
 433: LD_INT 0
 435: PUSH
 436: EMPTY
 437: LIST
 438: LIST
 439: LIST
 440: PUSH
 441: EMPTY
 442: LIST
 443: LIST
 444: LIST
 445: LIST
 446: LIST
 447: LIST
 448: LIST
 449: LIST
 450: LIST
 451: LIST
 452: LIST
 453: LIST
 454: LIST
 455: LIST
 456: LIST
 457: ST_TO_ADDR
// RandomizeAll ( ) ;
 458: CALL_OW 11
// Setup = [ 1 , 4 , rand ( 1 , 2 ) , 2 , 2 , 4 , 1 ] ;
 462: LD_ADDR_EXP 11
 466: PUSH
 467: LD_INT 1
 469: PUSH
 470: LD_INT 4
 472: PUSH
 473: LD_INT 1
 475: PPUSH
 476: LD_INT 2
 478: PPUSH
 479: CALL_OW 12
 483: PUSH
 484: LD_INT 2
 486: PUSH
 487: LD_INT 2
 489: PUSH
 490: LD_INT 4
 492: PUSH
 493: LD_INT 1
 495: PUSH
 496: EMPTY
 497: LIST
 498: LIST
 499: LIST
 500: LIST
 501: LIST
 502: LIST
 503: LIST
 504: ST_TO_ADDR
// Menu ;
 505: CALL 798 0 0
// for i = 1 to 8 do
 509: LD_ADDR_VAR 0 2
 513: PUSH
 514: DOUBLE
 515: LD_INT 1
 517: DEC
 518: ST_TO_ADDR
 519: LD_INT 8
 521: PUSH
 522: FOR_TO
 523: IFFALSE 539
// ChangeSideFog ( i , 1 ) ;
 525: LD_VAR 0 2
 529: PPUSH
 530: LD_INT 1
 532: PPUSH
 533: CALL_OW 343
 537: GO 522
 539: POP
 540: POP
// if Setup [ 3 ] = 3 then
 541: LD_EXP 11
 545: PUSH
 546: LD_INT 3
 548: ARRAY
 549: PUSH
 550: LD_INT 3
 552: EQUAL
 553: IFFALSE 584
// Setup = Replace ( Setup , 3 , rand ( 1 , 2 ) ) ;
 555: LD_ADDR_EXP 11
 559: PUSH
 560: LD_EXP 11
 564: PPUSH
 565: LD_INT 3
 567: PPUSH
 568: LD_INT 1
 570: PPUSH
 571: LD_INT 2
 573: PPUSH
 574: CALL_OW 12
 578: PPUSH
 579: CALL_OW 1
 583: ST_TO_ADDR
// if Setup [ 2 ] = 4 then
 584: LD_EXP 11
 588: PUSH
 589: LD_INT 2
 591: ARRAY
 592: PUSH
 593: LD_INT 4
 595: EQUAL
 596: IFFALSE 627
// Setup = Replace ( Setup , 2 , rand ( 1 , 3 ) ) ;
 598: LD_ADDR_EXP 11
 602: PUSH
 603: LD_EXP 11
 607: PPUSH
 608: LD_INT 2
 610: PPUSH
 611: LD_INT 1
 613: PPUSH
 614: LD_INT 3
 616: PPUSH
 617: CALL_OW 12
 621: PPUSH
 622: CALL_OW 1
 626: ST_TO_ADDR
// your_side = Setup [ 1 ] ;
 627: LD_ADDR_OWVAR 2
 631: PUSH
 632: LD_EXP 11
 636: PUSH
 637: LD_INT 1
 639: ARRAY
 640: ST_TO_ADDR
// ChangeSideFog ( Setup [ 1 ] , 2 ) ;
 641: LD_EXP 11
 645: PUSH
 646: LD_INT 1
 648: ARRAY
 649: PPUSH
 650: LD_INT 2
 652: PPUSH
 653: CALL_OW 343
// playersides = [ ] ;
 657: LD_ADDR_EXP 5
 661: PUSH
 662: EMPTY
 663: ST_TO_ADDR
// freesides = [ ] ;
 664: LD_ADDR_EXP 4
 668: PUSH
 669: EMPTY
 670: ST_TO_ADDR
// for i = 1 to 8 do
 671: LD_ADDR_VAR 0 2
 675: PUSH
 676: DOUBLE
 677: LD_INT 1
 679: DEC
 680: ST_TO_ADDR
 681: LD_INT 8
 683: PUSH
 684: FOR_TO
 685: IFFALSE 739
// if i = Setup [ 1 ] then
 687: LD_VAR 0 2
 691: PUSH
 692: LD_EXP 11
 696: PUSH
 697: LD_INT 1
 699: ARRAY
 700: EQUAL
 701: IFFALSE 721
// playersides = playersides ^ i else
 703: LD_ADDR_EXP 5
 707: PUSH
 708: LD_EXP 5
 712: PUSH
 713: LD_VAR 0 2
 717: ADD
 718: ST_TO_ADDR
 719: GO 737
// freesides = freesides ^ i ;
 721: LD_ADDR_EXP 4
 725: PUSH
 726: LD_EXP 4
 730: PUSH
 731: LD_VAR 0 2
 735: ADD
 736: ST_TO_ADDR
 737: GO 684
 739: POP
 740: POP
// if Setup [ 3 ] = 1 then
 741: LD_EXP 11
 745: PUSH
 746: LD_INT 3
 748: ARRAY
 749: PUSH
 750: LD_INT 1
 752: EQUAL
 753: IFFALSE 773
// ChangeSideFog ( freesides [ 1 ] , 2 ) else
 755: LD_EXP 4
 759: PUSH
 760: LD_INT 1
 762: ARRAY
 763: PPUSH
 764: LD_INT 2
 766: PPUSH
 767: CALL_OW 343
 771: GO 789
// ChangeSideFog ( freesides [ 2 ] , 2 ) ;
 773: LD_EXP 4
 777: PUSH
 778: LD_INT 2
 780: ARRAY
 781: PPUSH
 782: LD_INT 2
 784: PPUSH
 785: CALL_OW 343
// start ;
 789: CALL 1254 0 0
// end ;
 793: LD_VAR 0 1
 797: RET
// export function Menu ; begin
 798: LD_INT 0
 800: PPUSH
// case Query ( MenuHorizontal ) of 1 :
 801: LD_STRING MenuHorizontal
 803: PPUSH
 804: CALL_OW 97
 808: PUSH
 809: LD_INT 1
 811: DOUBLE
 812: EQUAL
 813: IFTRUE 817
 815: GO 820
 817: POP
// begin end ; 2 :
 818: GO 872
 820: LD_INT 2
 822: DOUBLE
 823: EQUAL
 824: IFTRUE 828
 826: GO 841
 828: POP
// begin changeMap ( 1 , __AM\01 ) ;
 829: LD_STRING 1
 831: PPUSH
 832: LD_STRING __AM\01
 834: PPUSH
 835: CALL_OW 340
// end ; 3 :
 839: GO 872
 841: LD_INT 3
 843: DOUBLE
 844: EQUAL
 845: IFTRUE 849
 847: GO 856
 849: POP
// begin Settings ;
 850: CALL 877 0 0
// end ; 4 :
 854: GO 872
 856: LD_INT 4
 858: DOUBLE
 859: EQUAL
 860: IFTRUE 864
 862: GO 871
 864: POP
// begin ExitGame ( ) ;
 865: CALL_OW 341
// end ; end ;
 869: GO 872
 871: POP
// end ;
 872: LD_VAR 0 1
 876: RET
// export function Settings ; begin
 877: LD_INT 0
 879: PPUSH
// case Query ( SettingsHorizontal ) of 1 :
 880: LD_STRING SettingsHorizontal
 882: PPUSH
 883: CALL_OW 97
 887: PUSH
 888: LD_INT 1
 890: DOUBLE
 891: EQUAL
 892: IFTRUE 896
 894: GO 903
 896: POP
// begin Menu ;
 897: CALL 798 0 0
// end ; 2 :
 901: GO 1249
 903: LD_INT 2
 905: DOUBLE
 906: EQUAL
 907: IFTRUE 911
 909: GO 944
 911: POP
// begin Setup = Replace ( Setup , 1 , Query ( Side ) ) ;
 912: LD_ADDR_EXP 11
 916: PUSH
 917: LD_EXP 11
 921: PPUSH
 922: LD_INT 1
 924: PPUSH
 925: LD_STRING Side
 927: PPUSH
 928: CALL_OW 97
 932: PPUSH
 933: CALL_OW 1
 937: ST_TO_ADDR
// Settings ;
 938: CALL 877 0 0
// end ; 3 :
 942: GO 1249
 944: LD_INT 3
 946: DOUBLE
 947: EQUAL
 948: IFTRUE 952
 950: GO 985
 952: POP
// begin Setup = Replace ( Setup , 2 , Query ( Nation ) ) ;
 953: LD_ADDR_EXP 11
 957: PUSH
 958: LD_EXP 11
 962: PPUSH
 963: LD_INT 2
 965: PPUSH
 966: LD_STRING Nation
 968: PPUSH
 969: CALL_OW 97
 973: PPUSH
 974: CALL_OW 1
 978: ST_TO_ADDR
// Settings ;
 979: CALL 877 0 0
// end ; 4 :
 983: GO 1249
 985: LD_INT 4
 987: DOUBLE
 988: EQUAL
 989: IFTRUE 993
 991: GO 1026
 993: POP
// begin Setup = Replace ( Setup , 3 , Query ( PositionHorizontal ) ) ;
 994: LD_ADDR_EXP 11
 998: PUSH
 999: LD_EXP 11
1003: PPUSH
1004: LD_INT 3
1006: PPUSH
1007: LD_STRING PositionHorizontal
1009: PPUSH
1010: CALL_OW 97
1014: PPUSH
1015: CALL_OW 1
1019: ST_TO_ADDR
// Settings ;
1020: CALL 877 0 0
// end ; 5 :
1024: GO 1249
1026: LD_INT 5
1028: DOUBLE
1029: EQUAL
1030: IFTRUE 1034
1032: GO 1067
1034: POP
// begin Setup = Replace ( Setup , 4 , Query ( People ) ) ;
1035: LD_ADDR_EXP 11
1039: PUSH
1040: LD_EXP 11
1044: PPUSH
1045: LD_INT 4
1047: PPUSH
1048: LD_STRING People
1050: PPUSH
1051: CALL_OW 97
1055: PPUSH
1056: CALL_OW 1
1060: ST_TO_ADDR
// Settings ;
1061: CALL 877 0 0
// end ; 6 :
1065: GO 1249
1067: LD_INT 6
1069: DOUBLE
1070: EQUAL
1071: IFTRUE 1075
1073: GO 1108
1075: POP
// begin Setup = Replace ( Setup , 5 , Query ( RespawnHuman ) ) ;
1076: LD_ADDR_EXP 11
1080: PUSH
1081: LD_EXP 11
1085: PPUSH
1086: LD_INT 5
1088: PPUSH
1089: LD_STRING RespawnHuman
1091: PPUSH
1092: CALL_OW 97
1096: PPUSH
1097: CALL_OW 1
1101: ST_TO_ADDR
// Settings ;
1102: CALL 877 0 0
// end ; 7 :
1106: GO 1249
1108: LD_INT 7
1110: DOUBLE
1111: EQUAL
1112: IFTRUE 1116
1114: GO 1149
1116: POP
// begin Setup = Replace ( Setup , 6 , Query ( Clicking ) ) ;
1117: LD_ADDR_EXP 11
1121: PUSH
1122: LD_EXP 11
1126: PPUSH
1127: LD_INT 6
1129: PPUSH
1130: LD_STRING Clicking
1132: PPUSH
1133: CALL_OW 97
1137: PPUSH
1138: CALL_OW 1
1142: ST_TO_ADDR
// Settings ;
1143: CALL 877 0 0
// end ; 8 :
1147: GO 1249
1149: LD_INT 8
1151: DOUBLE
1152: EQUAL
1153: IFTRUE 1157
1155: GO 1190
1157: POP
// begin Setup = Replace ( Setup , 7 , Query ( Gamemode ) ) ;
1158: LD_ADDR_EXP 11
1162: PUSH
1163: LD_EXP 11
1167: PPUSH
1168: LD_INT 7
1170: PPUSH
1171: LD_STRING Gamemode
1173: PPUSH
1174: CALL_OW 97
1178: PPUSH
1179: CALL_OW 1
1183: ST_TO_ADDR
// Settings ;
1184: CALL 877 0 0
// end ; 9 :
1188: GO 1249
1190: LD_INT 9
1192: DOUBLE
1193: EQUAL
1194: IFTRUE 1198
1196: GO 1248
1198: POP
// begin Setup = [ 1 , 4 , rand ( 1 , 2 ) , 2 , 2 , 4 , 1 ] ;
1199: LD_ADDR_EXP 11
1203: PUSH
1204: LD_INT 1
1206: PUSH
1207: LD_INT 4
1209: PUSH
1210: LD_INT 1
1212: PPUSH
1213: LD_INT 2
1215: PPUSH
1216: CALL_OW 12
1220: PUSH
1221: LD_INT 2
1223: PUSH
1224: LD_INT 2
1226: PUSH
1227: LD_INT 4
1229: PUSH
1230: LD_INT 1
1232: PUSH
1233: EMPTY
1234: LIST
1235: LIST
1236: LIST
1237: LIST
1238: LIST
1239: LIST
1240: LIST
1241: ST_TO_ADDR
// Settings ;
1242: CALL 877 0 0
// end ; end ;
1246: GO 1249
1248: POP
// end ;
1249: LD_VAR 0 1
1253: RET
// export function start ; var k , i , bases , l , j , y , n , cls , id , outside , names , v ; begin
1254: LD_INT 0
1256: PPUSH
1257: PPUSH
1258: PPUSH
1259: PPUSH
1260: PPUSH
1261: PPUSH
1262: PPUSH
1263: PPUSH
1264: PPUSH
1265: PPUSH
1266: PPUSH
1267: PPUSH
1268: PPUSH
// bases = [ [ 28 + 7 , 56 ] , [ 50 , 86 ] , [ 20 , 26 ] , [ 72 + 7 , 144 ] , [ 64 , 114 ] , [ 94 , 174 ] ] ;
1269: LD_ADDR_VAR 0 4
1273: PUSH
1274: LD_INT 28
1276: PUSH
1277: LD_INT 7
1279: PLUS
1280: PUSH
1281: LD_INT 56
1283: PUSH
1284: EMPTY
1285: LIST
1286: LIST
1287: PUSH
1288: LD_INT 50
1290: PUSH
1291: LD_INT 86
1293: PUSH
1294: EMPTY
1295: LIST
1296: LIST
1297: PUSH
1298: LD_INT 20
1300: PUSH
1301: LD_INT 26
1303: PUSH
1304: EMPTY
1305: LIST
1306: LIST
1307: PUSH
1308: LD_INT 72
1310: PUSH
1311: LD_INT 7
1313: PLUS
1314: PUSH
1315: LD_INT 144
1317: PUSH
1318: EMPTY
1319: LIST
1320: LIST
1321: PUSH
1322: LD_INT 64
1324: PUSH
1325: LD_INT 114
1327: PUSH
1328: EMPTY
1329: LIST
1330: LIST
1331: PUSH
1332: LD_INT 94
1334: PUSH
1335: LD_INT 174
1337: PUSH
1338: EMPTY
1339: LIST
1340: LIST
1341: PUSH
1342: EMPTY
1343: LIST
1344: LIST
1345: LIST
1346: LIST
1347: LIST
1348: LIST
1349: ST_TO_ADDR
// outside = [ [ 8 , 4 ] , [ 103 , 194 ] ] ;
1350: LD_ADDR_VAR 0 11
1354: PUSH
1355: LD_INT 8
1357: PUSH
1358: LD_INT 4
1360: PUSH
1361: EMPTY
1362: LIST
1363: LIST
1364: PUSH
1365: LD_INT 103
1367: PUSH
1368: LD_INT 194
1370: PUSH
1371: EMPTY
1372: LIST
1373: LIST
1374: PUSH
1375: EMPTY
1376: LIST
1377: LIST
1378: ST_TO_ADDR
// bs = [ 26 , 28 , 5 , 3 , 9 , 12 , 10 , 11 , 33 , 2 , 32 , 34 , 37 , 27 , 13 ] ;
1379: LD_ADDR_EXP 7
1383: PUSH
1384: LD_INT 26
1386: PUSH
1387: LD_INT 28
1389: PUSH
1390: LD_INT 5
1392: PUSH
1393: LD_INT 3
1395: PUSH
1396: LD_INT 9
1398: PUSH
1399: LD_INT 12
1401: PUSH
1402: LD_INT 10
1404: PUSH
1405: LD_INT 11
1407: PUSH
1408: LD_INT 33
1410: PUSH
1411: LD_INT 2
1413: PUSH
1414: LD_INT 32
1416: PUSH
1417: LD_INT 34
1419: PUSH
1420: LD_INT 37
1422: PUSH
1423: LD_INT 27
1425: PUSH
1426: LD_INT 13
1428: PUSH
1429: EMPTY
1430: LIST
1431: LIST
1432: LIST
1433: LIST
1434: LIST
1435: LIST
1436: LIST
1437: LIST
1438: LIST
1439: LIST
1440: LIST
1441: LIST
1442: LIST
1443: LIST
1444: LIST
1445: ST_TO_ADDR
// names = [ oil , sib , arm , wor , bas , com , wea , ara , las , ai , mon , tim , kil , sol , sold ] ;
1446: LD_ADDR_VAR 0 12
1450: PUSH
1451: LD_STRING oil
1453: PUSH
1454: LD_STRING sib
1456: PUSH
1457: LD_STRING arm
1459: PUSH
1460: LD_STRING wor
1462: PUSH
1463: LD_STRING bas
1465: PUSH
1466: LD_STRING com
1468: PUSH
1469: LD_STRING wea
1471: PUSH
1472: LD_STRING ara
1474: PUSH
1475: LD_STRING las
1477: PUSH
1478: LD_STRING ai
1480: PUSH
1481: LD_STRING mon
1483: PUSH
1484: LD_STRING tim
1486: PUSH
1487: LD_STRING kil
1489: PUSH
1490: LD_STRING sol
1492: PUSH
1493: LD_STRING sold
1495: PUSH
1496: EMPTY
1497: LIST
1498: LIST
1499: LIST
1500: LIST
1501: LIST
1502: LIST
1503: LIST
1504: LIST
1505: LIST
1506: LIST
1507: LIST
1508: LIST
1509: LIST
1510: LIST
1511: LIST
1512: ST_TO_ADDR
// n = 10 ;
1513: LD_ADDR_VAR 0 8
1517: PUSH
1518: LD_INT 10
1520: ST_TO_ADDR
// cls = [ 1 , 2 , 3 , 4 ] ;
1521: LD_ADDR_VAR 0 9
1525: PUSH
1526: LD_INT 1
1528: PUSH
1529: LD_INT 2
1531: PUSH
1532: LD_INT 3
1534: PUSH
1535: LD_INT 4
1537: PUSH
1538: EMPTY
1539: LIST
1540: LIST
1541: LIST
1542: LIST
1543: ST_TO_ADDR
// n = [ 7 , 10 , 13 ] [ Setup [ 4 ] ] ;
1544: LD_ADDR_VAR 0 8
1548: PUSH
1549: LD_INT 7
1551: PUSH
1552: LD_INT 10
1554: PUSH
1555: LD_INT 13
1557: PUSH
1558: EMPTY
1559: LIST
1560: LIST
1561: LIST
1562: PUSH
1563: LD_EXP 11
1567: PUSH
1568: LD_INT 4
1570: ARRAY
1571: ARRAY
1572: ST_TO_ADDR
// for i = 1 to 2 do
1573: LD_ADDR_VAR 0 3
1577: PUSH
1578: DOUBLE
1579: LD_INT 1
1581: DEC
1582: ST_TO_ADDR
1583: LD_INT 2
1585: PUSH
1586: FOR_TO
1587: IFFALSE 1792
// begin bc_level = 0 ;
1589: LD_ADDR_OWVAR 43
1593: PUSH
1594: LD_INT 0
1596: ST_TO_ADDR
// uc_nation = 3 ;
1597: LD_ADDR_OWVAR 21
1601: PUSH
1602: LD_INT 3
1604: ST_TO_ADDR
// uc_side = freesides [ i ] ;
1605: LD_ADDR_OWVAR 20
1609: PUSH
1610: LD_EXP 4
1614: PUSH
1615: LD_VAR 0 3
1619: ARRAY
1620: ST_TO_ADDR
// y = outside [ i ] [ 1 ] ;
1621: LD_ADDR_VAR 0 7
1625: PUSH
1626: LD_VAR 0 11
1630: PUSH
1631: LD_VAR 0 3
1635: ARRAY
1636: PUSH
1637: LD_INT 1
1639: ARRAY
1640: ST_TO_ADDR
// for l = 1 to bs do
1641: LD_ADDR_VAR 0 5
1645: PUSH
1646: DOUBLE
1647: LD_INT 1
1649: DEC
1650: ST_TO_ADDR
1651: LD_EXP 7
1655: PUSH
1656: FOR_TO
1657: IFFALSE 1788
// begin bc_type = bs [ l ] ;
1659: LD_ADDR_OWVAR 42
1663: PUSH
1664: LD_EXP 7
1668: PUSH
1669: LD_VAR 0 5
1673: ARRAY
1674: ST_TO_ADDR
// if bc_type = 27 then
1675: LD_OWVAR 42
1679: PUSH
1680: LD_INT 27
1682: EQUAL
1683: IFFALSE 1693
// uc_nation = 1 ;
1685: LD_ADDR_OWVAR 21
1689: PUSH
1690: LD_INT 1
1692: ST_TO_ADDR
// if bc_type = 13 then
1693: LD_OWVAR 42
1697: PUSH
1698: LD_INT 13
1700: EQUAL
1701: IFFALSE 1711
// uc_nation = 2 ;
1703: LD_ADDR_OWVAR 21
1707: PUSH
1708: LD_INT 2
1710: ST_TO_ADDR
// k = CreateAndPlaceBuildingXYD ( y , outside [ i ] [ 2 ] , 1 ) ;
1711: LD_ADDR_VAR 0 2
1715: PUSH
1716: LD_VAR 0 7
1720: PPUSH
1721: LD_VAR 0 11
1725: PUSH
1726: LD_VAR 0 3
1730: ARRAY
1731: PUSH
1732: LD_INT 2
1734: ARRAY
1735: PPUSH
1736: LD_INT 1
1738: PPUSH
1739: CALL_OW 47
1743: ST_TO_ADDR
// SetBName ( k , names [ l ] ) ;
1744: LD_VAR 0 2
1748: PPUSH
1749: LD_VAR 0 12
1753: PUSH
1754: LD_VAR 0 5
1758: ARRAY
1759: PPUSH
1760: CALL_OW 500
// uc_nation = 3 ;
1764: LD_ADDR_OWVAR 21
1768: PUSH
1769: LD_INT 3
1771: ST_TO_ADDR
// y = y + 8 ;
1772: LD_ADDR_VAR 0 7
1776: PUSH
1777: LD_VAR 0 7
1781: PUSH
1782: LD_INT 8
1784: PLUS
1785: ST_TO_ADDR
// end ;
1786: GO 1656
1788: POP
1789: POP
// end ;
1790: GO 1586
1792: POP
1793: POP
// bc_type = 0 ;
1794: LD_ADDR_OWVAR 42
1798: PUSH
1799: LD_INT 0
1801: ST_TO_ADDR
// bc_level = 0 ;
1802: LD_ADDR_OWVAR 43
1806: PUSH
1807: LD_INT 0
1809: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
1810: LD_ADDR_OWVAR 21
1814: PUSH
1815: LD_EXP 11
1819: PUSH
1820: LD_INT 2
1822: ARRAY
1823: ST_TO_ADDR
// uc_side = Setup [ 1 ] ;
1824: LD_ADDR_OWVAR 20
1828: PUSH
1829: LD_EXP 11
1833: PUSH
1834: LD_INT 1
1836: ARRAY
1837: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
1838: LD_EXP 11
1842: PUSH
1843: LD_INT 3
1845: ARRAY
1846: PUSH
1847: LD_INT 1
1849: EQUAL
1850: IFFALSE 2290
// begin v = CreateAndPlaceBuildingXYD ( bases [ i ] [ 1 ] , bases [ i ] [ 2 ] , 1 ) ;
1852: LD_ADDR_VAR 0 13
1856: PUSH
1857: LD_VAR 0 4
1861: PUSH
1862: LD_VAR 0 3
1866: ARRAY
1867: PUSH
1868: LD_INT 1
1870: ARRAY
1871: PPUSH
1872: LD_VAR 0 4
1876: PUSH
1877: LD_VAR 0 3
1881: ARRAY
1882: PUSH
1883: LD_INT 2
1885: ARRAY
1886: PPUSH
1887: LD_INT 1
1889: PPUSH
1890: CALL_OW 47
1894: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i ] [ 1 ] + 10 , bases [ i ] [ 2 ] ) ;
1895: LD_INT 5
1897: PPUSH
1898: LD_VAR 0 4
1902: PUSH
1903: LD_VAR 0 3
1907: ARRAY
1908: PUSH
1909: LD_INT 1
1911: ARRAY
1912: PUSH
1913: LD_INT 10
1915: PLUS
1916: PPUSH
1917: LD_VAR 0 4
1921: PUSH
1922: LD_VAR 0 3
1926: ARRAY
1927: PUSH
1928: LD_INT 2
1930: ARRAY
1931: PPUSH
1932: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
1936: LD_VAR 0 13
1940: PPUSH
1941: CALL_OW 274
1945: PPUSH
1946: LD_INT 1
1948: PPUSH
1949: LD_INT 50
1951: PPUSH
1952: CALL_OW 277
// for y = 1 to n do
1956: LD_ADDR_VAR 0 7
1960: PUSH
1961: DOUBLE
1962: LD_INT 1
1964: DEC
1965: ST_TO_ADDR
1966: LD_VAR 0 8
1970: PUSH
1971: FOR_TO
1972: IFFALSE 2054
// begin hc_name =  ;
1974: LD_ADDR_OWVAR 26
1978: PUSH
1979: LD_STRING 
1981: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
1982: LD_ADDR_OWVAR 28
1986: PUSH
1987: LD_VAR 0 9
1991: PUSH
1992: LD_VAR 0 7
1996: PUSH
1997: LD_INT 5
1999: MOD
2000: ARRAY
2001: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2002: LD_ADDR_OWVAR 27
2006: PUSH
2007: LD_INT 1
2009: PPUSH
2010: LD_INT 2
2012: PPUSH
2013: CALL_OW 12
2017: ST_TO_ADDR
// id = createhuman ;
2018: LD_ADDR_VAR 0 10
2022: PUSH
2023: CALL_OW 44
2027: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
2028: LD_VAR 0 10
2032: PPUSH
2033: LD_INT 5
2035: PPUSH
2036: LD_INT 0
2038: PPUSH
2039: CALL_OW 49
// CenterNowOnUnits ( id ) ;
2043: LD_VAR 0 10
2047: PPUSH
2048: CALL_OW 87
// end ;
2052: GO 1971
2054: POP
2055: POP
// uc_side = freesides [ 3 ] ;
2056: LD_ADDR_OWVAR 20
2060: PUSH
2061: LD_EXP 4
2065: PUSH
2066: LD_INT 3
2068: ARRAY
2069: ST_TO_ADDR
// v = CreateAndPlaceBuildingXYD ( bases [ i + 3 ] [ 1 ] , bases [ i + 3 ] [ 2 ] , 1 ) ;
2070: LD_ADDR_VAR 0 13
2074: PUSH
2075: LD_VAR 0 4
2079: PUSH
2080: LD_VAR 0 3
2084: PUSH
2085: LD_INT 3
2087: PLUS
2088: ARRAY
2089: PUSH
2090: LD_INT 1
2092: ARRAY
2093: PPUSH
2094: LD_VAR 0 4
2098: PUSH
2099: LD_VAR 0 3
2103: PUSH
2104: LD_INT 3
2106: PLUS
2107: ARRAY
2108: PUSH
2109: LD_INT 2
2111: ARRAY
2112: PPUSH
2113: LD_INT 1
2115: PPUSH
2116: CALL_OW 47
2120: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i + 3 ] [ 1 ] + 10 , bases [ i + 3 ] [ 2 ] ) ;
2121: LD_INT 5
2123: PPUSH
2124: LD_VAR 0 4
2128: PUSH
2129: LD_VAR 0 3
2133: PUSH
2134: LD_INT 3
2136: PLUS
2137: ARRAY
2138: PUSH
2139: LD_INT 1
2141: ARRAY
2142: PUSH
2143: LD_INT 10
2145: PLUS
2146: PPUSH
2147: LD_VAR 0 4
2151: PUSH
2152: LD_VAR 0 3
2156: PUSH
2157: LD_INT 3
2159: PLUS
2160: ARRAY
2161: PUSH
2162: LD_INT 2
2164: ARRAY
2165: PPUSH
2166: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
2170: LD_VAR 0 13
2174: PPUSH
2175: CALL_OW 274
2179: PPUSH
2180: LD_INT 1
2182: PPUSH
2183: LD_INT 50
2185: PPUSH
2186: CALL_OW 277
// for y = 1 to n do
2190: LD_ADDR_VAR 0 7
2194: PUSH
2195: DOUBLE
2196: LD_INT 1
2198: DEC
2199: ST_TO_ADDR
2200: LD_VAR 0 8
2204: PUSH
2205: FOR_TO
2206: IFFALSE 2288
// begin hc_name =  ;
2208: LD_ADDR_OWVAR 26
2212: PUSH
2213: LD_STRING 
2215: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
2216: LD_ADDR_OWVAR 28
2220: PUSH
2221: LD_VAR 0 9
2225: PUSH
2226: LD_VAR 0 7
2230: PUSH
2231: LD_INT 5
2233: MOD
2234: ARRAY
2235: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2236: LD_ADDR_OWVAR 27
2240: PUSH
2241: LD_INT 1
2243: PPUSH
2244: LD_INT 2
2246: PPUSH
2247: CALL_OW 12
2251: ST_TO_ADDR
// id = createhuman ;
2252: LD_ADDR_VAR 0 10
2256: PUSH
2257: CALL_OW 44
2261: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
2262: LD_VAR 0 10
2266: PPUSH
2267: LD_INT 5
2269: PPUSH
2270: LD_INT 0
2272: PPUSH
2273: CALL_OW 49
// CenterNowOnUnits ( id ) ;
2277: LD_VAR 0 10
2281: PPUSH
2282: CALL_OW 87
// end ;
2286: GO 2205
2288: POP
2289: POP
// end ; if Setup [ 3 ] = 2 then
2290: LD_EXP 11
2294: PUSH
2295: LD_INT 3
2297: ARRAY
2298: PUSH
2299: LD_INT 2
2301: EQUAL
2302: IFFALSE 2742
// begin v = CreateAndPlaceBuildingXYD ( bases [ i + 3 ] [ 1 ] , bases [ i + 3 ] [ 2 ] , 1 ) ;
2304: LD_ADDR_VAR 0 13
2308: PUSH
2309: LD_VAR 0 4
2313: PUSH
2314: LD_VAR 0 3
2318: PUSH
2319: LD_INT 3
2321: PLUS
2322: ARRAY
2323: PUSH
2324: LD_INT 1
2326: ARRAY
2327: PPUSH
2328: LD_VAR 0 4
2332: PUSH
2333: LD_VAR 0 3
2337: PUSH
2338: LD_INT 3
2340: PLUS
2341: ARRAY
2342: PUSH
2343: LD_INT 2
2345: ARRAY
2346: PPUSH
2347: LD_INT 1
2349: PPUSH
2350: CALL_OW 47
2354: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i + 3 ] [ 1 ] + 10 , bases [ i + 3 ] [ 2 ] ) ;
2355: LD_INT 5
2357: PPUSH
2358: LD_VAR 0 4
2362: PUSH
2363: LD_VAR 0 3
2367: PUSH
2368: LD_INT 3
2370: PLUS
2371: ARRAY
2372: PUSH
2373: LD_INT 1
2375: ARRAY
2376: PUSH
2377: LD_INT 10
2379: PLUS
2380: PPUSH
2381: LD_VAR 0 4
2385: PUSH
2386: LD_VAR 0 3
2390: PUSH
2391: LD_INT 3
2393: PLUS
2394: ARRAY
2395: PUSH
2396: LD_INT 2
2398: ARRAY
2399: PPUSH
2400: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
2404: LD_VAR 0 13
2408: PPUSH
2409: CALL_OW 274
2413: PPUSH
2414: LD_INT 1
2416: PPUSH
2417: LD_INT 50
2419: PPUSH
2420: CALL_OW 277
// for y = 1 to n do
2424: LD_ADDR_VAR 0 7
2428: PUSH
2429: DOUBLE
2430: LD_INT 1
2432: DEC
2433: ST_TO_ADDR
2434: LD_VAR 0 8
2438: PUSH
2439: FOR_TO
2440: IFFALSE 2522
// begin hc_name =  ;
2442: LD_ADDR_OWVAR 26
2446: PUSH
2447: LD_STRING 
2449: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
2450: LD_ADDR_OWVAR 28
2454: PUSH
2455: LD_VAR 0 9
2459: PUSH
2460: LD_VAR 0 7
2464: PUSH
2465: LD_INT 5
2467: MOD
2468: ARRAY
2469: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2470: LD_ADDR_OWVAR 27
2474: PUSH
2475: LD_INT 1
2477: PPUSH
2478: LD_INT 2
2480: PPUSH
2481: CALL_OW 12
2485: ST_TO_ADDR
// id = createhuman ;
2486: LD_ADDR_VAR 0 10
2490: PUSH
2491: CALL_OW 44
2495: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
2496: LD_VAR 0 10
2500: PPUSH
2501: LD_INT 5
2503: PPUSH
2504: LD_INT 0
2506: PPUSH
2507: CALL_OW 49
// CenterNowOnUnits ( id ) ;
2511: LD_VAR 0 10
2515: PPUSH
2516: CALL_OW 87
// end ;
2520: GO 2439
2522: POP
2523: POP
// uc_side = freesides [ 3 ] ;
2524: LD_ADDR_OWVAR 20
2528: PUSH
2529: LD_EXP 4
2533: PUSH
2534: LD_INT 3
2536: ARRAY
2537: ST_TO_ADDR
// v = CreateAndPlaceBuildingXYD ( bases [ i ] [ 1 ] , bases [ i ] [ 2 ] , 1 ) ;
2538: LD_ADDR_VAR 0 13
2542: PUSH
2543: LD_VAR 0 4
2547: PUSH
2548: LD_VAR 0 3
2552: ARRAY
2553: PUSH
2554: LD_INT 1
2556: ARRAY
2557: PPUSH
2558: LD_VAR 0 4
2562: PUSH
2563: LD_VAR 0 3
2567: ARRAY
2568: PUSH
2569: LD_INT 2
2571: ARRAY
2572: PPUSH
2573: LD_INT 1
2575: PPUSH
2576: CALL_OW 47
2580: ST_TO_ADDR
// MoveAreaXY ( spawningarea , bases [ i ] [ 1 ] + 10 , bases [ i ] [ 2 ] ) ;
2581: LD_INT 5
2583: PPUSH
2584: LD_VAR 0 4
2588: PUSH
2589: LD_VAR 0 3
2593: ARRAY
2594: PUSH
2595: LD_INT 1
2597: ARRAY
2598: PUSH
2599: LD_INT 10
2601: PLUS
2602: PPUSH
2603: LD_VAR 0 4
2607: PUSH
2608: LD_VAR 0 3
2612: ARRAY
2613: PUSH
2614: LD_INT 2
2616: ARRAY
2617: PPUSH
2618: CALL_OW 425
// SetResourceType ( GetBase ( v ) , 1 , 50 ) ;
2622: LD_VAR 0 13
2626: PPUSH
2627: CALL_OW 274
2631: PPUSH
2632: LD_INT 1
2634: PPUSH
2635: LD_INT 50
2637: PPUSH
2638: CALL_OW 277
// for y = 1 to n do
2642: LD_ADDR_VAR 0 7
2646: PUSH
2647: DOUBLE
2648: LD_INT 1
2650: DEC
2651: ST_TO_ADDR
2652: LD_VAR 0 8
2656: PUSH
2657: FOR_TO
2658: IFFALSE 2740
// begin hc_name =  ;
2660: LD_ADDR_OWVAR 26
2664: PUSH
2665: LD_STRING 
2667: ST_TO_ADDR
// hc_class = cls [ y mod 5 ] ;
2668: LD_ADDR_OWVAR 28
2672: PUSH
2673: LD_VAR 0 9
2677: PUSH
2678: LD_VAR 0 7
2682: PUSH
2683: LD_INT 5
2685: MOD
2686: ARRAY
2687: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2688: LD_ADDR_OWVAR 27
2692: PUSH
2693: LD_INT 1
2695: PPUSH
2696: LD_INT 2
2698: PPUSH
2699: CALL_OW 12
2703: ST_TO_ADDR
// id = createhuman ;
2704: LD_ADDR_VAR 0 10
2708: PUSH
2709: CALL_OW 44
2713: ST_TO_ADDR
// PlaceUnitArea ( id , spawningarea , false ) ;
2714: LD_VAR 0 10
2718: PPUSH
2719: LD_INT 5
2721: PPUSH
2722: LD_INT 0
2724: PPUSH
2725: CALL_OW 49
// CenterNowOnUnits ( id ) ;
2729: LD_VAR 0 10
2733: PPUSH
2734: CALL_OW 87
// end ;
2738: GO 2657
2740: POP
2741: POP
// end ; PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
2742: LD_INT 1
2744: PPUSH
2745: LD_INT 21
2747: PUSH
2748: LD_INT 22
2750: PUSH
2751: LD_INT 23
2753: PUSH
2754: EMPTY
2755: LIST
2756: LIST
2757: LIST
2758: PPUSH
2759: LD_INT 1000
2761: PPUSH
2762: LD_INT 100
2764: PPUSH
2765: LD_INT 1
2767: PPUSH
2768: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
2772: LD_INT 1
2774: PPUSH
2775: LD_INT 1
2777: PPUSH
2778: CALL_OW 424
// MoveAreaXY ( Area01 , 50 - 44 , 12 ) ;
2782: LD_INT 1
2784: PPUSH
2785: LD_INT 50
2787: PUSH
2788: LD_INT 44
2790: MINUS
2791: PPUSH
2792: LD_INT 12
2794: PPUSH
2795: CALL_OW 425
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
2799: LD_INT 1
2801: PPUSH
2802: LD_INT 21
2804: PUSH
2805: LD_INT 22
2807: PUSH
2808: LD_INT 23
2810: PUSH
2811: EMPTY
2812: LIST
2813: LIST
2814: LIST
2815: PPUSH
2816: LD_INT 1000
2818: PPUSH
2819: LD_INT 100
2821: PPUSH
2822: LD_INT 1
2824: PPUSH
2825: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
2829: LD_INT 1
2831: PPUSH
2832: LD_INT 1
2834: PPUSH
2835: CALL_OW 424
// MoveAreaXY ( Area01 , 50 + 44 , 188 ) ;
2839: LD_INT 1
2841: PPUSH
2842: LD_INT 50
2844: PUSH
2845: LD_INT 44
2847: PLUS
2848: PPUSH
2849: LD_INT 188
2851: PPUSH
2852: CALL_OW 425
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 1000 , 100 , 1 ) ;
2856: LD_INT 1
2858: PPUSH
2859: LD_INT 21
2861: PUSH
2862: LD_INT 22
2864: PUSH
2865: LD_INT 23
2867: PUSH
2868: EMPTY
2869: LIST
2870: LIST
2871: LIST
2872: PPUSH
2873: LD_INT 1000
2875: PPUSH
2876: LD_INT 100
2878: PPUSH
2879: LD_INT 1
2881: PPUSH
2882: CALL_OW 352
// SetAreaMapShow ( Area01 , 1 ) ;
2886: LD_INT 1
2888: PPUSH
2889: LD_INT 1
2891: PPUSH
2892: CALL_OW 424
// end ;
2896: LD_VAR 0 1
2900: RET
// every 0 0$01 trigger FilterAllUnits ( [ f_weapon , 48 ] ) or FilterAllUnits ( [ f_weapon , 8 ] ) do var i ;
2901: LD_INT 34
2903: PUSH
2904: LD_INT 48
2906: PUSH
2907: EMPTY
2908: LIST
2909: LIST
2910: PPUSH
2911: CALL_OW 69
2915: PUSH
2916: LD_INT 34
2918: PUSH
2919: LD_INT 8
2921: PUSH
2922: EMPTY
2923: LIST
2924: LIST
2925: PPUSH
2926: CALL_OW 69
2930: OR
2931: IFFALSE 2971
2933: GO 2935
2935: DISABLE
2936: LD_INT 0
2938: PPUSH
// begin for i = 1 to 8 do
2939: LD_ADDR_VAR 0 1
2943: PUSH
2944: DOUBLE
2945: LD_INT 1
2947: DEC
2948: ST_TO_ADDR
2949: LD_INT 8
2951: PUSH
2952: FOR_TO
2953: IFFALSE 2969
// ChangeSideFog ( i , 1 ) ;
2955: LD_VAR 0 1
2959: PPUSH
2960: LD_INT 1
2962: PPUSH
2963: CALL_OW 343
2967: GO 2952
2969: POP
2970: POP
// end ;
2971: PPOPN 1
2973: END
// every 1 1$00 do var i , base , res ;
2974: GO 2976
2976: DISABLE
2977: LD_INT 0
2979: PPUSH
2980: PPUSH
2981: PPUSH
// begin base = FilterAllUnits ( [ [ f_side , Setup [ 1 ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
2982: LD_ADDR_VAR 0 2
2986: PUSH
2987: LD_INT 22
2989: PUSH
2990: LD_EXP 11
2994: PUSH
2995: LD_INT 1
2997: ARRAY
2998: PUSH
2999: EMPTY
3000: LIST
3001: LIST
3002: PUSH
3003: LD_INT 2
3005: PUSH
3006: LD_INT 30
3008: PUSH
3009: LD_INT 0
3011: PUSH
3012: EMPTY
3013: LIST
3014: LIST
3015: PUSH
3016: LD_INT 30
3018: PUSH
3019: LD_INT 1
3021: PUSH
3022: EMPTY
3023: LIST
3024: LIST
3025: PUSH
3026: EMPTY
3027: LIST
3028: LIST
3029: LIST
3030: PUSH
3031: EMPTY
3032: LIST
3033: LIST
3034: PPUSH
3035: CALL_OW 69
3039: ST_TO_ADDR
// if base then
3040: LD_VAR 0 2
3044: IFFALSE 3117
// begin base = GetBase ( base [ 1 ] ) ;
3046: LD_ADDR_VAR 0 2
3050: PUSH
3051: LD_VAR 0 2
3055: PUSH
3056: LD_INT 1
3058: ARRAY
3059: PPUSH
3060: CALL_OW 274
3064: ST_TO_ADDR
// res = GetResources ( base ) ;
3065: LD_ADDR_VAR 0 3
3069: PUSH
3070: LD_VAR 0 2
3074: PPUSH
3075: CALL_OW 279
3079: ST_TO_ADDR
// SetResourceType ( base , 1 , res [ 1 ] + income [ Setup [ 1 ] ] ) ;
3080: LD_VAR 0 2
3084: PPUSH
3085: LD_INT 1
3087: PPUSH
3088: LD_VAR 0 3
3092: PUSH
3093: LD_INT 1
3095: ARRAY
3096: PUSH
3097: LD_EXP 8
3101: PUSH
3102: LD_EXP 11
3106: PUSH
3107: LD_INT 1
3109: ARRAY
3110: ARRAY
3111: PLUS
3112: PPUSH
3113: CALL_OW 277
// end ; base = FilterAllUnits ( [ [ f_side , freesides [ 3 ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
3117: LD_ADDR_VAR 0 2
3121: PUSH
3122: LD_INT 22
3124: PUSH
3125: LD_EXP 4
3129: PUSH
3130: LD_INT 3
3132: ARRAY
3133: PUSH
3134: EMPTY
3135: LIST
3136: LIST
3137: PUSH
3138: LD_INT 2
3140: PUSH
3141: LD_INT 30
3143: PUSH
3144: LD_INT 0
3146: PUSH
3147: EMPTY
3148: LIST
3149: LIST
3150: PUSH
3151: LD_INT 30
3153: PUSH
3154: LD_INT 1
3156: PUSH
3157: EMPTY
3158: LIST
3159: LIST
3160: PUSH
3161: EMPTY
3162: LIST
3163: LIST
3164: LIST
3165: PUSH
3166: EMPTY
3167: LIST
3168: LIST
3169: PPUSH
3170: CALL_OW 69
3174: ST_TO_ADDR
// if base then
3175: LD_VAR 0 2
3179: IFFALSE 3252
// begin base = GetBase ( base [ 1 ] ) ;
3181: LD_ADDR_VAR 0 2
3185: PUSH
3186: LD_VAR 0 2
3190: PUSH
3191: LD_INT 1
3193: ARRAY
3194: PPUSH
3195: CALL_OW 274
3199: ST_TO_ADDR
// res = GetResources ( base ) ;
3200: LD_ADDR_VAR 0 3
3204: PUSH
3205: LD_VAR 0 2
3209: PPUSH
3210: CALL_OW 279
3214: ST_TO_ADDR
// SetResourceType ( base , 1 , res [ 1 ] + income [ freesides [ 3 ] ] ) ;
3215: LD_VAR 0 2
3219: PPUSH
3220: LD_INT 1
3222: PPUSH
3223: LD_VAR 0 3
3227: PUSH
3228: LD_INT 1
3230: ARRAY
3231: PUSH
3232: LD_EXP 8
3236: PUSH
3237: LD_EXP 4
3241: PUSH
3242: LD_INT 3
3244: ARRAY
3245: ARRAY
3246: PLUS
3247: PPUSH
3248: CALL_OW 277
// end ; enable ;
3252: ENABLE
// end ;
3253: PPOPN 3
3255: END
// every 0 0$30 do var i , id ; var position , skills , className ;
3256: GO 3258
3258: DISABLE
3259: LD_INT 0
3261: PPUSH
3262: PPUSH
3263: PPUSH
3264: PPUSH
3265: PPUSH
// begin if Setup [ 3 ] = 1 then
3266: LD_EXP 11
3270: PUSH
3271: LD_INT 3
3273: ARRAY
3274: PUSH
3275: LD_INT 1
3277: EQUAL
3278: IFFALSE 3365
// begin position = botspawn ;
3280: LD_ADDR_VAR 0 3
3284: PUSH
3285: LD_INT 7
3287: ST_TO_ADDR
// skills = [ playerSettings [ 1 ] , playerSettings [ 1 ] , playerSettings [ 1 ] , playerSettings [ 1 ] ] ;
3288: LD_ADDR_VAR 0 4
3292: PUSH
3293: LD_EXP 12
3297: PUSH
3298: LD_INT 1
3300: ARRAY
3301: PUSH
3302: LD_EXP 12
3306: PUSH
3307: LD_INT 1
3309: ARRAY
3310: PUSH
3311: LD_EXP 12
3315: PUSH
3316: LD_INT 1
3318: ARRAY
3319: PUSH
3320: LD_EXP 12
3324: PUSH
3325: LD_INT 1
3327: ARRAY
3328: PUSH
3329: EMPTY
3330: LIST
3331: LIST
3332: LIST
3333: LIST
3334: ST_TO_ADDR
// className = playerSettings [ 3 ] ;
3335: LD_ADDR_VAR 0 5
3339: PUSH
3340: LD_EXP 12
3344: PUSH
3345: LD_INT 3
3347: ARRAY
3348: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3349: LD_ADDR_OWVAR 20
3353: PUSH
3354: LD_EXP 4
3358: PUSH
3359: LD_INT 1
3361: ARRAY
3362: ST_TO_ADDR
// end else
3363: GO 3448
// begin position = botspawn ;
3365: LD_ADDR_VAR 0 3
3369: PUSH
3370: LD_INT 7
3372: ST_TO_ADDR
// skills = [ AISettings [ 1 ] , AISettings [ 1 ] , AISettings [ 1 ] , AISettings [ 1 ] ] ;
3373: LD_ADDR_VAR 0 4
3377: PUSH
3378: LD_EXP 13
3382: PUSH
3383: LD_INT 1
3385: ARRAY
3386: PUSH
3387: LD_EXP 13
3391: PUSH
3392: LD_INT 1
3394: ARRAY
3395: PUSH
3396: LD_EXP 13
3400: PUSH
3401: LD_INT 1
3403: ARRAY
3404: PUSH
3405: LD_EXP 13
3409: PUSH
3410: LD_INT 1
3412: ARRAY
3413: PUSH
3414: EMPTY
3415: LIST
3416: LIST
3417: LIST
3418: LIST
3419: ST_TO_ADDR
// className = AISettings [ 3 ] ;
3420: LD_ADDR_VAR 0 5
3424: PUSH
3425: LD_EXP 13
3429: PUSH
3430: LD_INT 3
3432: ARRAY
3433: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3434: LD_ADDR_OWVAR 20
3438: PUSH
3439: LD_EXP 4
3443: PUSH
3444: LD_INT 1
3446: ARRAY
3447: ST_TO_ADDR
// end ; for i = 1 to soldiers [ 1 ] do
3448: LD_ADDR_VAR 0 1
3452: PUSH
3453: DOUBLE
3454: LD_INT 1
3456: DEC
3457: ST_TO_ADDR
3458: LD_EXP 10
3462: PUSH
3463: LD_INT 1
3465: ARRAY
3466: PUSH
3467: FOR_TO
3468: IFFALSE 3559
// begin uc_nation = rand ( 1 , 3 ) ;
3470: LD_ADDR_OWVAR 21
3474: PUSH
3475: LD_INT 1
3477: PPUSH
3478: LD_INT 3
3480: PPUSH
3481: CALL_OW 12
3485: ST_TO_ADDR
// hc_name =  ;
3486: LD_ADDR_OWVAR 26
3490: PUSH
3491: LD_STRING 
3493: ST_TO_ADDR
// hc_skills = skills ;
3494: LD_ADDR_OWVAR 31
3498: PUSH
3499: LD_VAR 0 4
3503: ST_TO_ADDR
// hc_class = className ;
3504: LD_ADDR_OWVAR 28
3508: PUSH
3509: LD_VAR 0 5
3513: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
3514: LD_ADDR_OWVAR 27
3518: PUSH
3519: LD_INT 1
3521: PPUSH
3522: LD_INT 2
3524: PPUSH
3525: CALL_OW 12
3529: ST_TO_ADDR
// id = createhuman ;
3530: LD_ADDR_VAR 0 2
3534: PUSH
3535: CALL_OW 44
3539: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
3540: LD_VAR 0 2
3544: PPUSH
3545: LD_VAR 0 3
3549: PPUSH
3550: LD_INT 0
3552: PPUSH
3553: CALL_OW 49
// end ;
3557: GO 3467
3559: POP
3560: POP
// soldiers := Replace ( soldiers , 1 , 0 ) ;
3561: LD_ADDR_EXP 10
3565: PUSH
3566: LD_EXP 10
3570: PPUSH
3571: LD_INT 1
3573: PPUSH
3574: LD_INT 0
3576: PPUSH
3577: CALL_OW 1
3581: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
3582: LD_EXP 11
3586: PUSH
3587: LD_INT 3
3589: ARRAY
3590: PUSH
3591: LD_INT 1
3593: EQUAL
3594: IFFALSE 3681
// begin position = topspawn ;
3596: LD_ADDR_VAR 0 3
3600: PUSH
3601: LD_INT 6
3603: ST_TO_ADDR
// skills = [ AISettings [ 1 ] , AISettings [ 1 ] , AISettings [ 1 ] , AISettings [ 1 ] ] ;
3604: LD_ADDR_VAR 0 4
3608: PUSH
3609: LD_EXP 13
3613: PUSH
3614: LD_INT 1
3616: ARRAY
3617: PUSH
3618: LD_EXP 13
3622: PUSH
3623: LD_INT 1
3625: ARRAY
3626: PUSH
3627: LD_EXP 13
3631: PUSH
3632: LD_INT 1
3634: ARRAY
3635: PUSH
3636: LD_EXP 13
3640: PUSH
3641: LD_INT 1
3643: ARRAY
3644: PUSH
3645: EMPTY
3646: LIST
3647: LIST
3648: LIST
3649: LIST
3650: ST_TO_ADDR
// className = AISettings [ 3 ] ;
3651: LD_ADDR_VAR 0 5
3655: PUSH
3656: LD_EXP 13
3660: PUSH
3661: LD_INT 3
3663: ARRAY
3664: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
3665: LD_ADDR_OWVAR 20
3669: PUSH
3670: LD_EXP 4
3674: PUSH
3675: LD_INT 2
3677: ARRAY
3678: ST_TO_ADDR
// end else
3679: GO 3764
// begin position = topspawn ;
3681: LD_ADDR_VAR 0 3
3685: PUSH
3686: LD_INT 6
3688: ST_TO_ADDR
// skills = [ playerSettings [ 1 ] , playerSettings [ 1 ] , playerSettings [ 1 ] , playerSettings [ 1 ] ] ;
3689: LD_ADDR_VAR 0 4
3693: PUSH
3694: LD_EXP 12
3698: PUSH
3699: LD_INT 1
3701: ARRAY
3702: PUSH
3703: LD_EXP 12
3707: PUSH
3708: LD_INT 1
3710: ARRAY
3711: PUSH
3712: LD_EXP 12
3716: PUSH
3717: LD_INT 1
3719: ARRAY
3720: PUSH
3721: LD_EXP 12
3725: PUSH
3726: LD_INT 1
3728: ARRAY
3729: PUSH
3730: EMPTY
3731: LIST
3732: LIST
3733: LIST
3734: LIST
3735: ST_TO_ADDR
// className = playerSettings [ 3 ] ;
3736: LD_ADDR_VAR 0 5
3740: PUSH
3741: LD_EXP 12
3745: PUSH
3746: LD_INT 3
3748: ARRAY
3749: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
3750: LD_ADDR_OWVAR 20
3754: PUSH
3755: LD_EXP 4
3759: PUSH
3760: LD_INT 2
3762: ARRAY
3763: ST_TO_ADDR
// end ; for i = 1 to soldiers [ 2 ] do
3764: LD_ADDR_VAR 0 1
3768: PUSH
3769: DOUBLE
3770: LD_INT 1
3772: DEC
3773: ST_TO_ADDR
3774: LD_EXP 10
3778: PUSH
3779: LD_INT 2
3781: ARRAY
3782: PUSH
3783: FOR_TO
3784: IFFALSE 3875
// begin uc_nation = rand ( 1 , 3 ) ;
3786: LD_ADDR_OWVAR 21
3790: PUSH
3791: LD_INT 1
3793: PPUSH
3794: LD_INT 3
3796: PPUSH
3797: CALL_OW 12
3801: ST_TO_ADDR
// hc_name =  ;
3802: LD_ADDR_OWVAR 26
3806: PUSH
3807: LD_STRING 
3809: ST_TO_ADDR
// hc_skills = skills ;
3810: LD_ADDR_OWVAR 31
3814: PUSH
3815: LD_VAR 0 4
3819: ST_TO_ADDR
// hc_class = className ;
3820: LD_ADDR_OWVAR 28
3824: PUSH
3825: LD_VAR 0 5
3829: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
3830: LD_ADDR_OWVAR 27
3834: PUSH
3835: LD_INT 1
3837: PPUSH
3838: LD_INT 2
3840: PPUSH
3841: CALL_OW 12
3845: ST_TO_ADDR
// id = createhuman ;
3846: LD_ADDR_VAR 0 2
3850: PUSH
3851: CALL_OW 44
3855: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
3856: LD_VAR 0 2
3860: PPUSH
3861: LD_VAR 0 3
3865: PPUSH
3866: LD_INT 0
3868: PPUSH
3869: CALL_OW 49
// end ;
3873: GO 3783
3875: POP
3876: POP
// soldiers := Replace ( soldiers , 2 , 0 ) ;
3877: LD_ADDR_EXP 10
3881: PUSH
3882: LD_EXP 10
3886: PPUSH
3887: LD_INT 2
3889: PPUSH
3890: LD_INT 0
3892: PPUSH
3893: CALL_OW 1
3897: ST_TO_ADDR
// enable ;
3898: ENABLE
// end ;
3899: PPOPN 5
3901: END
// export function ShowTimer ; var AllStrings , ExtraStrings ; begin
3902: LD_INT 0
3904: PPUSH
3905: PPUSH
3906: PPUSH
// if timer <= 0 then
3907: LD_EXP 2
3911: PUSH
3912: LD_INT 0
3914: LESSEQUAL
3915: IFFALSE 3925
// timer = 60 ;
3917: LD_ADDR_EXP 2
3921: PUSH
3922: LD_INT 60
3924: ST_TO_ADDR
// if reltimer <= 0 then
3925: LD_EXP 3
3929: PUSH
3930: LD_INT 0
3932: LESSEQUAL
3933: IFFALSE 3943
// reltimer = 30 ;
3935: LD_ADDR_EXP 3
3939: PUSH
3940: LD_INT 30
3942: ST_TO_ADDR
// reltimer = reltimer - 1 ;
3943: LD_ADDR_EXP 3
3947: PUSH
3948: LD_EXP 3
3952: PUSH
3953: LD_INT 1
3955: MINUS
3956: ST_TO_ADDR
// timer = timer - 1 ;
3957: LD_ADDR_EXP 2
3961: PUSH
3962: LD_EXP 2
3966: PUSH
3967: LD_INT 1
3969: MINUS
3970: ST_TO_ADDR
// AllStrings := [ #timer , tick ] ;
3971: LD_ADDR_VAR 0 2
3975: PUSH
3976: LD_STRING #timer
3978: PUSH
3979: LD_OWVAR 1
3983: PUSH
3984: EMPTY
3985: LIST
3986: LIST
3987: ST_TO_ADDR
// ExtraStrings := [ #income , timer ] ^  ^ [ #yourincome , income [ your_side ] ] ^  ^ [ #release , reltimer ] ;
3988: LD_ADDR_VAR 0 3
3992: PUSH
3993: LD_STRING #income
3995: PUSH
3996: LD_EXP 2
4000: PUSH
4001: EMPTY
4002: LIST
4003: LIST
4004: PUSH
4005: LD_STRING 
4007: ADD
4008: PUSH
4009: LD_STRING #yourincome
4011: PUSH
4012: LD_EXP 8
4016: PUSH
4017: LD_OWVAR 2
4021: ARRAY
4022: PUSH
4023: EMPTY
4024: LIST
4025: LIST
4026: ADD
4027: PUSH
4028: LD_STRING 
4030: ADD
4031: PUSH
4032: LD_STRING #release
4034: PUSH
4035: LD_EXP 3
4039: PUSH
4040: EMPTY
4041: LIST
4042: LIST
4043: ADD
4044: ST_TO_ADDR
// if ( ExtraStrings ) then
4045: LD_VAR 0 3
4049: IFFALSE 4071
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4051: LD_ADDR_VAR 0 2
4055: PUSH
4056: LD_VAR 0 2
4060: PUSH
4061: LD_STRING 
4063: ADD
4064: PUSH
4065: LD_VAR 0 3
4069: ADD
4070: ST_TO_ADDR
// Display_Strings := AllStrings ;
4071: LD_ADDR_OWVAR 47
4075: PUSH
4076: LD_VAR 0 2
4080: ST_TO_ADDR
// end ;
4081: LD_VAR 0 1
4085: RET
// every 0 0$1 do
4086: GO 4088
4088: DISABLE
// begin ShowTimer ;
4089: CALL 3902 0 0
// enable ;
4093: ENABLE
// end ;
4094: END
// every 0 0$01 do var p1 , a1 , p2 , a2 , i ;
4095: GO 4097
4097: DISABLE
4098: LD_INT 0
4100: PPUSH
4101: PPUSH
4102: PPUSH
4103: PPUSH
4104: PPUSH
// begin repeat wait ( 0 0$01 ) ;
4105: LD_INT 35
4107: PPUSH
4108: CALL_OW 67
// if Setup [ 3 ] = 1 then
4112: LD_EXP 11
4116: PUSH
4117: LD_INT 3
4119: ARRAY
4120: PUSH
4121: LD_INT 1
4123: EQUAL
4124: IFFALSE 4154
// p1 = FilterAllUnits ( [ f_side , Setup [ 1 ] ] ) else
4126: LD_ADDR_VAR 0 1
4130: PUSH
4131: LD_INT 22
4133: PUSH
4134: LD_EXP 11
4138: PUSH
4139: LD_INT 1
4141: ARRAY
4142: PUSH
4143: EMPTY
4144: LIST
4145: LIST
4146: PPUSH
4147: CALL_OW 69
4151: ST_TO_ADDR
4152: GO 4180
// p1 = FilterAllUnits ( [ f_side , freesides [ 3 ] ] ) ;
4154: LD_ADDR_VAR 0 1
4158: PUSH
4159: LD_INT 22
4161: PUSH
4162: LD_EXP 4
4166: PUSH
4167: LD_INT 3
4169: ARRAY
4170: PUSH
4171: EMPTY
4172: LIST
4173: LIST
4174: PPUSH
4175: CALL_OW 69
4179: ST_TO_ADDR
// a1 = FilterAllUnits ( [ f_side , freesides [ 2 ] ] ) ;
4180: LD_ADDR_VAR 0 2
4184: PUSH
4185: LD_INT 22
4187: PUSH
4188: LD_EXP 4
4192: PUSH
4193: LD_INT 2
4195: ARRAY
4196: PUSH
4197: EMPTY
4198: LIST
4199: LIST
4200: PPUSH
4201: CALL_OW 69
4205: ST_TO_ADDR
// if Setup [ 3 ] = 2 then
4206: LD_EXP 11
4210: PUSH
4211: LD_INT 3
4213: ARRAY
4214: PUSH
4215: LD_INT 2
4217: EQUAL
4218: IFFALSE 4248
// p2 = FilterAllUnits ( [ f_side , Setup [ 1 ] ] ) else
4220: LD_ADDR_VAR 0 3
4224: PUSH
4225: LD_INT 22
4227: PUSH
4228: LD_EXP 11
4232: PUSH
4233: LD_INT 1
4235: ARRAY
4236: PUSH
4237: EMPTY
4238: LIST
4239: LIST
4240: PPUSH
4241: CALL_OW 69
4245: ST_TO_ADDR
4246: GO 4274
// p2 = FilterAllUnits ( [ f_side , freesides [ 3 ] ] ) ;
4248: LD_ADDR_VAR 0 3
4252: PUSH
4253: LD_INT 22
4255: PUSH
4256: LD_EXP 4
4260: PUSH
4261: LD_INT 3
4263: ARRAY
4264: PUSH
4265: EMPTY
4266: LIST
4267: LIST
4268: PPUSH
4269: CALL_OW 69
4273: ST_TO_ADDR
// a2 = FilterAllUnits ( [ f_side , freesides [ 1 ] ] ) ;
4274: LD_ADDR_VAR 0 4
4278: PUSH
4279: LD_INT 22
4281: PUSH
4282: LD_EXP 4
4286: PUSH
4287: LD_INT 1
4289: ARRAY
4290: PUSH
4291: EMPTY
4292: LIST
4293: LIST
4294: PPUSH
4295: CALL_OW 69
4299: ST_TO_ADDR
// for i in a1 do
4300: LD_ADDR_VAR 0 5
4304: PUSH
4305: LD_VAR 0 2
4309: PUSH
4310: FOR_IN
4311: IFFALSE 4339
// ComAttackUnit ( i , NearestUnitToUnit ( p1 , i ) ) ;
4313: LD_VAR 0 5
4317: PPUSH
4318: LD_VAR 0 1
4322: PPUSH
4323: LD_VAR 0 5
4327: PPUSH
4328: CALL_OW 74
4332: PPUSH
4333: CALL_OW 115
4337: GO 4310
4339: POP
4340: POP
// for i in a2 do
4341: LD_ADDR_VAR 0 5
4345: PUSH
4346: LD_VAR 0 4
4350: PUSH
4351: FOR_IN
4352: IFFALSE 4380
// ComAttackUnit ( i , NearestUnitToUnit ( p2 , i ) ) ;
4354: LD_VAR 0 5
4358: PPUSH
4359: LD_VAR 0 3
4363: PPUSH
4364: LD_VAR 0 5
4368: PPUSH
4369: CALL_OW 74
4373: PPUSH
4374: CALL_OW 115
4378: GO 4351
4380: POP
4381: POP
// until a2 = 100000 end ;
4382: LD_VAR 0 4
4386: PUSH
4387: LD_INT 100000
4389: EQUAL
4390: IFFALSE 4105
4392: PPOPN 5
4394: END
// export click ; every 0 0$0.1 do
4395: GO 4397
4397: DISABLE
// begin click = 1 ;
4398: LD_ADDR_EXP 14
4402: PUSH
4403: LD_INT 1
4405: ST_TO_ADDR
// wait ( ( Setup [ 6 ] - 1 ) * 10 10$00 ) ;
4406: LD_EXP 11
4410: PUSH
4411: LD_INT 6
4413: ARRAY
4414: PUSH
4415: LD_INT 1
4417: MINUS
4418: PUSH
4419: LD_INT 21000
4421: MUL
4422: PPUSH
4423: CALL_OW 67
// if ( Setup [ 6 ] - 1 ) = 5 then
4427: LD_EXP 11
4431: PUSH
4432: LD_INT 6
4434: ARRAY
4435: PUSH
4436: LD_INT 1
4438: MINUS
4439: PUSH
4440: LD_INT 5
4442: EQUAL
4443: IFFALSE 4455
// click = 1 else
4445: LD_ADDR_EXP 14
4449: PUSH
4450: LD_INT 1
4452: ST_TO_ADDR
4453: GO 4463
// click = 0 ;
4455: LD_ADDR_EXP 14
4459: PUSH
4460: LD_INT 0
4462: ST_TO_ADDR
// end ;
4463: END
// every 0 0$0.1 trigger isSelected ( FilterAllUnits ( [ f_placed ] ) ) do var i , u , Filter , l , res , base , id , z , re ;
4464: LD_INT 52
4466: PUSH
4467: EMPTY
4468: LIST
4469: PPUSH
4470: CALL_OW 69
4474: PPUSH
4475: CALL_OW 306
4479: IFFALSE 4712
4481: GO 4483
4483: DISABLE
4484: LD_INT 0
4486: PPUSH
4487: PPUSH
4488: PPUSH
4489: PPUSH
4490: PPUSH
4491: PPUSH
4492: PPUSH
4493: PPUSH
4494: PPUSH
// begin Filter = FilterAllUnits ( [ f_placed ] ) ;
4495: LD_ADDR_VAR 0 3
4499: PUSH
4500: LD_INT 52
4502: PUSH
4503: EMPTY
4504: LIST
4505: PPUSH
4506: CALL_OW 69
4510: ST_TO_ADDR
// for i = 1 to Filter do
4511: LD_ADDR_VAR 0 1
4515: PUSH
4516: DOUBLE
4517: LD_INT 1
4519: DEC
4520: ST_TO_ADDR
4521: LD_VAR 0 3
4525: PUSH
4526: FOR_TO
4527: IFFALSE 4564
// if isSelected ( Filter [ i ] ) then
4529: LD_VAR 0 3
4533: PUSH
4534: LD_VAR 0 1
4538: ARRAY
4539: PPUSH
4540: CALL_OW 306
4544: IFFALSE 4562
// u = Filter [ i ] ;
4546: LD_ADDR_VAR 0 2
4550: PUSH
4551: LD_VAR 0 3
4555: PUSH
4556: LD_VAR 0 1
4560: ARRAY
4561: ST_TO_ADDR
4562: GO 4526
4564: POP
4565: POP
// if GetSide ( u ) = freesides [ 1 ] or GetSide ( u ) = freesides [ 2 ] then
4566: LD_VAR 0 2
4570: PPUSH
4571: CALL_OW 255
4575: PUSH
4576: LD_EXP 4
4580: PUSH
4581: LD_INT 1
4583: ARRAY
4584: EQUAL
4585: PUSH
4586: LD_VAR 0 2
4590: PPUSH
4591: CALL_OW 255
4595: PUSH
4596: LD_EXP 4
4600: PUSH
4601: LD_INT 2
4603: ARRAY
4604: EQUAL
4605: OR
4606: IFFALSE 4711
// for i = 1 to bs do
4608: LD_ADDR_VAR 0 1
4612: PUSH
4613: DOUBLE
4614: LD_INT 1
4616: DEC
4617: ST_TO_ADDR
4618: LD_EXP 7
4622: PUSH
4623: FOR_TO
4624: IFFALSE 4709
// if GetBType ( u ) = bs [ i ] then
4626: LD_VAR 0 2
4630: PPUSH
4631: CALL_OW 266
4635: PUSH
4636: LD_EXP 7
4640: PUSH
4641: LD_VAR 0 1
4645: ARRAY
4646: EQUAL
4647: IFFALSE 4707
// begin ToLua ( OW_CUSTOM_COMMAND( & u & , & i & , & your_side & ); ) ;
4649: LD_STRING OW_CUSTOM_COMMAND(
4651: PUSH
4652: LD_VAR 0 2
4656: STR
4657: PUSH
4658: LD_STRING ,
4660: STR
4661: PUSH
4662: LD_VAR 0 1
4666: STR
4667: PUSH
4668: LD_STRING ,
4670: STR
4671: PUSH
4672: LD_OWVAR 2
4676: STR
4677: PUSH
4678: LD_STRING );
4680: STR
4681: PPUSH
4682: CALL_OW 559
// if click = 1 then
4686: LD_EXP 14
4690: PUSH
4691: LD_INT 1
4693: EQUAL
4694: IFFALSE 4705
// DeselectUnits ( u ) ;
4696: LD_VAR 0 2
4700: PPUSH
4701: CALL_OW 491
// break ;
4705: GO 4709
// end ;
4707: GO 4623
4709: POP
4710: POP
// enable ;
4711: ENABLE
// end ;
4712: PPOPN 9
4714: END
// on CustomCommand ( side , u , i , s , arg4 , arg5 ) do var res , z , id , o , p , base , w , k ; var position ;
4715: LD_INT 0
4717: PPUSH
4718: PPUSH
4719: PPUSH
4720: PPUSH
4721: PPUSH
4722: PPUSH
4723: PPUSH
4724: PPUSH
4725: PPUSH
// begin if Setup [ 7 ] = 2 then
4726: LD_EXP 11
4730: PUSH
4731: LD_INT 7
4733: ARRAY
4734: PUSH
4735: LD_INT 2
4737: EQUAL
4738: IFFALSE 4756
// begin AIBuy ( i , s ) ;
4740: LD_VAR 0 3
4744: PPUSH
4745: LD_VAR 0 4
4749: PPUSH
4750: CALL 11220 0 2
// exit ;
4754: GO 7701
// end ; o = [ 42 , 42 , 42 , 42 , 43 , 44 , 45 , 46 , 48 ] ;
4756: LD_ADDR_VAR 0 10
4760: PUSH
4761: LD_INT 42
4763: PUSH
4764: LD_INT 42
4766: PUSH
4767: LD_INT 42
4769: PUSH
4770: LD_INT 42
4772: PUSH
4773: LD_INT 43
4775: PUSH
4776: LD_INT 44
4778: PUSH
4779: LD_INT 45
4781: PUSH
4782: LD_INT 46
4784: PUSH
4785: LD_INT 48
4787: PUSH
4788: EMPTY
4789: LIST
4790: LIST
4791: LIST
4792: LIST
4793: LIST
4794: LIST
4795: LIST
4796: LIST
4797: LIST
4798: ST_TO_ADDR
// p = [ 21 , 22 , 23 , 24 , 24 , 24 , 24 , 24 , 24 ] ;
4799: LD_ADDR_VAR 0 11
4803: PUSH
4804: LD_INT 21
4806: PUSH
4807: LD_INT 22
4809: PUSH
4810: LD_INT 23
4812: PUSH
4813: LD_INT 24
4815: PUSH
4816: LD_INT 24
4818: PUSH
4819: LD_INT 24
4821: PUSH
4822: LD_INT 24
4824: PUSH
4825: LD_INT 24
4827: PUSH
4828: LD_INT 24
4830: PUSH
4831: EMPTY
4832: LIST
4833: LIST
4834: LIST
4835: LIST
4836: LIST
4837: LIST
4838: LIST
4839: LIST
4840: LIST
4841: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_side , s ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
4842: LD_ADDR_VAR 0 12
4846: PUSH
4847: LD_INT 22
4849: PUSH
4850: LD_VAR 0 4
4854: PUSH
4855: EMPTY
4856: LIST
4857: LIST
4858: PUSH
4859: LD_INT 2
4861: PUSH
4862: LD_INT 30
4864: PUSH
4865: LD_INT 0
4867: PUSH
4868: EMPTY
4869: LIST
4870: LIST
4871: PUSH
4872: LD_INT 30
4874: PUSH
4875: LD_INT 1
4877: PUSH
4878: EMPTY
4879: LIST
4880: LIST
4881: PUSH
4882: EMPTY
4883: LIST
4884: LIST
4885: LIST
4886: PUSH
4887: EMPTY
4888: LIST
4889: LIST
4890: PPUSH
4891: CALL_OW 69
4895: ST_TO_ADDR
// if base then
4896: LD_VAR 0 12
4900: IFFALSE 7701
// begin base = GetBase ( base [ 1 ] ) ;
4902: LD_ADDR_VAR 0 12
4906: PUSH
4907: LD_VAR 0 12
4911: PUSH
4912: LD_INT 1
4914: ARRAY
4915: PPUSH
4916: CALL_OW 274
4920: ST_TO_ADDR
// res = GetResources ( base ) ;
4921: LD_ADDR_VAR 0 7
4925: PUSH
4926: LD_VAR 0 12
4930: PPUSH
4931: CALL_OW 279
4935: ST_TO_ADDR
// if not res then
4936: LD_VAR 0 7
4940: NOT
4941: IFFALSE 4977
// for z = 1 to 3 do
4943: LD_ADDR_VAR 0 8
4947: PUSH
4948: DOUBLE
4949: LD_INT 1
4951: DEC
4952: ST_TO_ADDR
4953: LD_INT 3
4955: PUSH
4956: FOR_TO
4957: IFFALSE 4975
// res = res ^ 0 ;
4959: LD_ADDR_VAR 0 7
4963: PUSH
4964: LD_VAR 0 7
4968: PUSH
4969: LD_INT 0
4971: ADD
4972: ST_TO_ADDR
4973: GO 4956
4975: POP
4976: POP
// if res = 1 then
4977: LD_VAR 0 7
4981: PUSH
4982: LD_INT 1
4984: EQUAL
4985: IFFALSE 5021
// for z = 1 to 2 do
4987: LD_ADDR_VAR 0 8
4991: PUSH
4992: DOUBLE
4993: LD_INT 1
4995: DEC
4996: ST_TO_ADDR
4997: LD_INT 2
4999: PUSH
5000: FOR_TO
5001: IFFALSE 5019
// res = res ^ 0 ;
5003: LD_ADDR_VAR 0 7
5007: PUSH
5008: LD_VAR 0 7
5012: PUSH
5013: LD_INT 0
5015: ADD
5016: ST_TO_ADDR
5017: GO 5000
5019: POP
5020: POP
// if res = 2 then
5021: LD_VAR 0 7
5025: PUSH
5026: LD_INT 2
5028: EQUAL
5029: IFFALSE 5045
// res = res ^ 0 ;
5031: LD_ADDR_VAR 0 7
5035: PUSH
5036: LD_VAR 0 7
5040: PUSH
5041: LD_INT 0
5043: ADD
5044: ST_TO_ADDR
// if req [ i ] [ 3 ] <> 0 then
5045: LD_EXP 9
5049: PUSH
5050: LD_VAR 0 3
5054: ARRAY
5055: PUSH
5056: LD_INT 3
5058: ARRAY
5059: PUSH
5060: LD_INT 0
5062: NONEQUAL
5063: IFFALSE 5217
// begin if res [ req [ i ] [ 2 ] ] >= req [ i ] [ 1 ] then
5065: LD_VAR 0 7
5069: PUSH
5070: LD_EXP 9
5074: PUSH
5075: LD_VAR 0 3
5079: ARRAY
5080: PUSH
5081: LD_INT 2
5083: ARRAY
5084: ARRAY
5085: PUSH
5086: LD_EXP 9
5090: PUSH
5091: LD_VAR 0 3
5095: ARRAY
5096: PUSH
5097: LD_INT 1
5099: ARRAY
5100: GREATEREQUAL
5101: IFFALSE 5215
// begin SetResourceType ( base , req [ i ] [ 3 ] , res [ req [ i ] [ 3 ] ] + 1 ) ;
5103: LD_VAR 0 12
5107: PPUSH
5108: LD_EXP 9
5112: PUSH
5113: LD_VAR 0 3
5117: ARRAY
5118: PUSH
5119: LD_INT 3
5121: ARRAY
5122: PPUSH
5123: LD_VAR 0 7
5127: PUSH
5128: LD_EXP 9
5132: PUSH
5133: LD_VAR 0 3
5137: ARRAY
5138: PUSH
5139: LD_INT 3
5141: ARRAY
5142: ARRAY
5143: PUSH
5144: LD_INT 1
5146: PLUS
5147: PPUSH
5148: CALL_OW 277
// SetResourceType ( base , req [ i ] [ 2 ] , res [ req [ i ] [ 2 ] ] - req [ i ] [ 1 ] ) ;
5152: LD_VAR 0 12
5156: PPUSH
5157: LD_EXP 9
5161: PUSH
5162: LD_VAR 0 3
5166: ARRAY
5167: PUSH
5168: LD_INT 2
5170: ARRAY
5171: PPUSH
5172: LD_VAR 0 7
5176: PUSH
5177: LD_EXP 9
5181: PUSH
5182: LD_VAR 0 3
5186: ARRAY
5187: PUSH
5188: LD_INT 2
5190: ARRAY
5191: ARRAY
5192: PUSH
5193: LD_EXP 9
5197: PUSH
5198: LD_VAR 0 3
5202: ARRAY
5203: PUSH
5204: LD_INT 1
5206: ARRAY
5207: MINUS
5208: PPUSH
5209: CALL_OW 277
// exit ;
5213: GO 7701
// end ; end else
5215: GO 7701
// begin if res [ req [ i ] [ 2 ] ] >= req [ i ] [ 1 ] then
5217: LD_VAR 0 7
5221: PUSH
5222: LD_EXP 9
5226: PUSH
5227: LD_VAR 0 3
5231: ARRAY
5232: PUSH
5233: LD_INT 2
5235: ARRAY
5236: ARRAY
5237: PUSH
5238: LD_EXP 9
5242: PUSH
5243: LD_VAR 0 3
5247: ARRAY
5248: PUSH
5249: LD_INT 1
5251: ARRAY
5252: GREATEREQUAL
5253: IFFALSE 7701
// begin SetResourceType ( base , req [ i ] [ 2 ] , res [ req [ i ] [ 2 ] ] - req [ i ] [ 1 ] ) ;
5255: LD_VAR 0 12
5259: PPUSH
5260: LD_EXP 9
5264: PUSH
5265: LD_VAR 0 3
5269: ARRAY
5270: PUSH
5271: LD_INT 2
5273: ARRAY
5274: PPUSH
5275: LD_VAR 0 7
5279: PUSH
5280: LD_EXP 9
5284: PUSH
5285: LD_VAR 0 3
5289: ARRAY
5290: PUSH
5291: LD_INT 2
5293: ARRAY
5294: ARRAY
5295: PUSH
5296: LD_EXP 9
5300: PUSH
5301: LD_VAR 0 3
5305: ARRAY
5306: PUSH
5307: LD_INT 1
5309: ARRAY
5310: MINUS
5311: PPUSH
5312: CALL_OW 277
// if i = 3 then
5316: LD_VAR 0 3
5320: PUSH
5321: LD_INT 3
5323: EQUAL
5324: IFFALSE 5453
// begin if Setup [ 3 ] = 1 then
5326: LD_EXP 11
5330: PUSH
5331: LD_INT 3
5333: ARRAY
5334: PUSH
5335: LD_INT 1
5337: EQUAL
5338: IFFALSE 5371
// soldiers = Replace ( soldiers , 1 , soldiers [ 1 ] + 1 ) ;
5340: LD_ADDR_EXP 10
5344: PUSH
5345: LD_EXP 10
5349: PPUSH
5350: LD_INT 1
5352: PPUSH
5353: LD_EXP 10
5357: PUSH
5358: LD_INT 1
5360: ARRAY
5361: PUSH
5362: LD_INT 1
5364: PLUS
5365: PPUSH
5366: CALL_OW 1
5370: ST_TO_ADDR
// if Setup [ 3 ] = 2 then
5371: LD_EXP 11
5375: PUSH
5376: LD_INT 3
5378: ARRAY
5379: PUSH
5380: LD_INT 2
5382: EQUAL
5383: IFFALSE 5416
// soldiers = Replace ( soldiers , 2 , soldiers [ 2 ] + 1 ) ;
5385: LD_ADDR_EXP 10
5389: PUSH
5390: LD_EXP 10
5394: PPUSH
5395: LD_INT 2
5397: PPUSH
5398: LD_EXP 10
5402: PUSH
5403: LD_INT 2
5405: ARRAY
5406: PUSH
5407: LD_INT 1
5409: PLUS
5410: PPUSH
5411: CALL_OW 1
5415: ST_TO_ADDR
// income := Replace ( income , s , income [ s ] + 5 ) ;
5416: LD_ADDR_EXP 8
5420: PUSH
5421: LD_EXP 8
5425: PPUSH
5426: LD_VAR 0 4
5430: PPUSH
5431: LD_EXP 8
5435: PUSH
5436: LD_VAR 0 4
5440: ARRAY
5441: PUSH
5442: LD_INT 5
5444: PLUS
5445: PPUSH
5446: CALL_OW 1
5450: ST_TO_ADDR
// exit ;
5451: GO 7701
// end ; if i = 4 then
5453: LD_VAR 0 3
5457: PUSH
5458: LD_INT 4
5460: EQUAL
5461: IFFALSE 5670
// begin uc_nation = 3 ;
5463: LD_ADDR_OWVAR 21
5467: PUSH
5468: LD_INT 3
5470: ST_TO_ADDR
// vc_chassis = p [ playerSettings [ 2 ] ] ;
5471: LD_ADDR_OWVAR 37
5475: PUSH
5476: LD_VAR 0 11
5480: PUSH
5481: LD_EXP 12
5485: PUSH
5486: LD_INT 2
5488: ARRAY
5489: ARRAY
5490: ST_TO_ADDR
// vc_weapon = o [ playerSettings [ 2 ] ] ;
5491: LD_ADDR_OWVAR 40
5495: PUSH
5496: LD_VAR 0 10
5500: PUSH
5501: LD_EXP 12
5505: PUSH
5506: LD_INT 2
5508: ARRAY
5509: ARRAY
5510: ST_TO_ADDR
// vc_engine = 1 ;
5511: LD_ADDR_OWVAR 39
5515: PUSH
5516: LD_INT 1
5518: ST_TO_ADDR
// vc_control = 3 ;
5519: LD_ADDR_OWVAR 38
5523: PUSH
5524: LD_INT 3
5526: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
5527: LD_EXP 11
5531: PUSH
5532: LD_INT 3
5534: ARRAY
5535: PUSH
5536: LD_INT 1
5538: EQUAL
5539: IFFALSE 5580
// begin uc_side = freesides [ 1 ] ;
5541: LD_ADDR_OWVAR 20
5545: PUSH
5546: LD_EXP 4
5550: PUSH
5551: LD_INT 1
5553: ARRAY
5554: ST_TO_ADDR
// id = createvehicle ;
5555: LD_ADDR_VAR 0 9
5559: PUSH
5560: CALL_OW 45
5564: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
5565: LD_VAR 0 9
5569: PPUSH
5570: LD_INT 7
5572: PPUSH
5573: LD_INT 0
5575: PPUSH
5576: CALL_OW 49
// end ; if Setup [ 3 ] = 2 then
5580: LD_EXP 11
5584: PUSH
5585: LD_INT 3
5587: ARRAY
5588: PUSH
5589: LD_INT 2
5591: EQUAL
5592: IFFALSE 5633
// begin uc_side = freesides [ 2 ] ;
5594: LD_ADDR_OWVAR 20
5598: PUSH
5599: LD_EXP 4
5603: PUSH
5604: LD_INT 2
5606: ARRAY
5607: ST_TO_ADDR
// id = createvehicle ;
5608: LD_ADDR_VAR 0 9
5612: PUSH
5613: CALL_OW 45
5617: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
5618: LD_VAR 0 9
5622: PPUSH
5623: LD_INT 6
5625: PPUSH
5626: LD_INT 0
5628: PPUSH
5629: CALL_OW 49
// end ; income := Replace ( income , s , income [ s ] + 40 ) ;
5633: LD_ADDR_EXP 8
5637: PUSH
5638: LD_EXP 8
5642: PPUSH
5643: LD_VAR 0 4
5647: PPUSH
5648: LD_EXP 8
5652: PUSH
5653: LD_VAR 0 4
5657: ARRAY
5658: PUSH
5659: LD_INT 40
5661: PLUS
5662: PPUSH
5663: CALL_OW 1
5667: ST_TO_ADDR
// exit ;
5668: GO 7701
// end ; if i = 5 then
5670: LD_VAR 0 3
5674: PUSH
5675: LD_INT 5
5677: EQUAL
5678: IFFALSE 5736
// begin playerSettings := Replace ( playerSettings , 1 , playerSettings [ 1 ] + 1 ) ;
5680: LD_ADDR_EXP 12
5684: PUSH
5685: LD_EXP 12
5689: PPUSH
5690: LD_INT 1
5692: PPUSH
5693: LD_EXP 12
5697: PUSH
5698: LD_INT 1
5700: ARRAY
5701: PUSH
5702: LD_INT 1
5704: PLUS
5705: PPUSH
5706: CALL_OW 1
5710: ST_TO_ADDR
// if playerSettings [ 1 ] = 5 then
5711: LD_EXP 12
5715: PUSH
5716: LD_INT 1
5718: ARRAY
5719: PUSH
5720: LD_INT 5
5722: EQUAL
5723: IFFALSE 5734
// DestroyUnit ( u ) ;
5725: LD_VAR 0 2
5729: PPUSH
5730: CALL_OW 65
// exit ;
5734: GO 7701
// end ; if i = 6 then
5736: LD_VAR 0 3
5740: PUSH
5741: LD_INT 6
5743: EQUAL
5744: IFFALSE 5832
// begin if Setup [ 7 ] = 1 then
5746: LD_EXP 11
5750: PUSH
5751: LD_INT 7
5753: ARRAY
5754: PUSH
5755: LD_INT 1
5757: EQUAL
5758: IFFALSE 5816
// begin playerSettings := Replace ( playerSettings , 2 , playerSettings [ 2 ] + 1 ) ;
5760: LD_ADDR_EXP 12
5764: PUSH
5765: LD_EXP 12
5769: PPUSH
5770: LD_INT 2
5772: PPUSH
5773: LD_EXP 12
5777: PUSH
5778: LD_INT 2
5780: ARRAY
5781: PUSH
5782: LD_INT 1
5784: PLUS
5785: PPUSH
5786: CALL_OW 1
5790: ST_TO_ADDR
// if playerSettings [ 2 ] = 9 then
5791: LD_EXP 12
5795: PUSH
5796: LD_INT 2
5798: ARRAY
5799: PUSH
5800: LD_INT 9
5802: EQUAL
5803: IFFALSE 5814
// DestroyUnit ( u ) ;
5805: LD_VAR 0 2
5809: PPUSH
5810: CALL_OW 65
// end else
5814: GO 5830
// AIBuy ( i , s ) ;
5816: LD_VAR 0 3
5820: PPUSH
5821: LD_VAR 0 4
5825: PPUSH
5826: CALL 11220 0 2
// exit ;
5830: GO 7701
// end ; if i = 7 then
5832: LD_VAR 0 3
5836: PUSH
5837: LD_INT 7
5839: EQUAL
5840: IFFALSE 5888
// begin playerSettings := Replace ( playerSettings , 3 , 9 ) ;
5842: LD_ADDR_EXP 12
5846: PUSH
5847: LD_EXP 12
5851: PPUSH
5852: LD_INT 3
5854: PPUSH
5855: LD_INT 9
5857: PPUSH
5858: CALL_OW 1
5862: ST_TO_ADDR
// if playerSettings [ 3 ] = 9 then
5863: LD_EXP 12
5867: PUSH
5868: LD_INT 3
5870: ARRAY
5871: PUSH
5872: LD_INT 9
5874: EQUAL
5875: IFFALSE 5886
// DestroyUnit ( u ) ;
5877: LD_VAR 0 2
5881: PPUSH
5882: CALL_OW 65
// exit ;
5886: GO 7701
// end ; if i = 8 then
5888: LD_VAR 0 3
5892: PUSH
5893: LD_INT 8
5895: EQUAL
5896: IFFALSE 6096
// begin uc_nation = 2 ;
5898: LD_ADDR_OWVAR 21
5902: PUSH
5903: LD_INT 2
5905: ST_TO_ADDR
// vc_chassis = 11 ;
5906: LD_ADDR_OWVAR 37
5910: PUSH
5911: LD_INT 11
5913: ST_TO_ADDR
// vc_weapon = 29 ;
5914: LD_ADDR_OWVAR 40
5918: PUSH
5919: LD_INT 29
5921: ST_TO_ADDR
// vc_engine = 1 ;
5922: LD_ADDR_OWVAR 39
5926: PUSH
5927: LD_INT 1
5929: ST_TO_ADDR
// vc_control = 3 ;
5930: LD_ADDR_OWVAR 38
5934: PUSH
5935: LD_INT 3
5937: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
5938: LD_EXP 11
5942: PUSH
5943: LD_INT 3
5945: ARRAY
5946: PUSH
5947: LD_INT 1
5949: EQUAL
5950: IFFALSE 6016
// begin uc_side = freesides [ 1 ] ;
5952: LD_ADDR_OWVAR 20
5956: PUSH
5957: LD_EXP 4
5961: PUSH
5962: LD_INT 1
5964: ARRAY
5965: ST_TO_ADDR
// id = createvehicle ;
5966: LD_ADDR_VAR 0 9
5970: PUSH
5971: CALL_OW 45
5975: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
5976: LD_VAR 0 9
5980: PPUSH
5981: LD_INT 7
5983: PPUSH
5984: LD_INT 0
5986: PPUSH
5987: CALL_OW 49
// id = createvehicle ;
5991: LD_ADDR_VAR 0 9
5995: PUSH
5996: CALL_OW 45
6000: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
6001: LD_VAR 0 9
6005: PPUSH
6006: LD_INT 7
6008: PPUSH
6009: LD_INT 0
6011: PPUSH
6012: CALL_OW 49
// end ; if Setup [ 3 ] = 2 then
6016: LD_EXP 11
6020: PUSH
6021: LD_INT 3
6023: ARRAY
6024: PUSH
6025: LD_INT 2
6027: EQUAL
6028: IFFALSE 6094
// begin uc_side = freesides [ 2 ] ;
6030: LD_ADDR_OWVAR 20
6034: PUSH
6035: LD_EXP 4
6039: PUSH
6040: LD_INT 2
6042: ARRAY
6043: ST_TO_ADDR
// id = createvehicle ;
6044: LD_ADDR_VAR 0 9
6048: PUSH
6049: CALL_OW 45
6053: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6054: LD_VAR 0 9
6058: PPUSH
6059: LD_INT 6
6061: PPUSH
6062: LD_INT 0
6064: PPUSH
6065: CALL_OW 49
// id = createvehicle ;
6069: LD_ADDR_VAR 0 9
6073: PUSH
6074: CALL_OW 45
6078: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6079: LD_VAR 0 9
6083: PPUSH
6084: LD_INT 6
6086: PPUSH
6087: LD_INT 0
6089: PPUSH
6090: CALL_OW 49
// end ; exit ;
6094: GO 7701
// end ; if i = 9 then
6096: LD_VAR 0 3
6100: PUSH
6101: LD_INT 9
6103: EQUAL
6104: IFFALSE 6304
// begin uc_nation = 2 ;
6106: LD_ADDR_OWVAR 21
6110: PUSH
6111: LD_INT 2
6113: ST_TO_ADDR
// vc_chassis = 11 ;
6114: LD_ADDR_OWVAR 37
6118: PUSH
6119: LD_INT 11
6121: ST_TO_ADDR
// vc_weapon = 10 ;
6122: LD_ADDR_OWVAR 40
6126: PUSH
6127: LD_INT 10
6129: ST_TO_ADDR
// vc_engine = 1 ;
6130: LD_ADDR_OWVAR 39
6134: PUSH
6135: LD_INT 1
6137: ST_TO_ADDR
// vc_control = 3 ;
6138: LD_ADDR_OWVAR 38
6142: PUSH
6143: LD_INT 3
6145: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
6146: LD_EXP 11
6150: PUSH
6151: LD_INT 3
6153: ARRAY
6154: PUSH
6155: LD_INT 1
6157: EQUAL
6158: IFFALSE 6224
// begin uc_side = freesides [ 1 ] ;
6160: LD_ADDR_OWVAR 20
6164: PUSH
6165: LD_EXP 4
6169: PUSH
6170: LD_INT 1
6172: ARRAY
6173: ST_TO_ADDR
// id = createvehicle ;
6174: LD_ADDR_VAR 0 9
6178: PUSH
6179: CALL_OW 45
6183: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
6184: LD_VAR 0 9
6188: PPUSH
6189: LD_INT 7
6191: PPUSH
6192: LD_INT 0
6194: PPUSH
6195: CALL_OW 49
// id = createvehicle ;
6199: LD_ADDR_VAR 0 9
6203: PUSH
6204: CALL_OW 45
6208: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
6209: LD_VAR 0 9
6213: PPUSH
6214: LD_INT 7
6216: PPUSH
6217: LD_INT 0
6219: PPUSH
6220: CALL_OW 49
// end ; if Setup [ 3 ] = 2 then
6224: LD_EXP 11
6228: PUSH
6229: LD_INT 3
6231: ARRAY
6232: PUSH
6233: LD_INT 2
6235: EQUAL
6236: IFFALSE 6302
// begin uc_side = freesides [ 2 ] ;
6238: LD_ADDR_OWVAR 20
6242: PUSH
6243: LD_EXP 4
6247: PUSH
6248: LD_INT 2
6250: ARRAY
6251: ST_TO_ADDR
// id = createvehicle ;
6252: LD_ADDR_VAR 0 9
6256: PUSH
6257: CALL_OW 45
6261: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6262: LD_VAR 0 9
6266: PPUSH
6267: LD_INT 6
6269: PPUSH
6270: LD_INT 0
6272: PPUSH
6273: CALL_OW 49
// id = createvehicle ;
6277: LD_ADDR_VAR 0 9
6281: PUSH
6282: CALL_OW 45
6286: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6287: LD_VAR 0 9
6291: PPUSH
6292: LD_INT 6
6294: PPUSH
6295: LD_INT 0
6297: PPUSH
6298: CALL_OW 49
// end ; exit ;
6302: GO 7701
// end ; if i = 10 then
6304: LD_VAR 0 3
6308: PUSH
6309: LD_INT 10
6311: EQUAL
6312: IFFALSE 6554
// begin if Setup [ 3 ] = 1 then
6314: LD_EXP 11
6318: PUSH
6319: LD_INT 3
6321: ARRAY
6322: PUSH
6323: LD_INT 1
6325: EQUAL
6326: IFFALSE 6433
// begin playerSettings := Replace ( playerSettings , 3 , playerSettings [ 3 ] + 1 ) ;
6328: LD_ADDR_EXP 12
6332: PUSH
6333: LD_EXP 12
6337: PPUSH
6338: LD_INT 3
6340: PPUSH
6341: LD_EXP 12
6345: PUSH
6346: LD_INT 3
6348: ARRAY
6349: PUSH
6350: LD_INT 1
6352: PLUS
6353: PPUSH
6354: CALL_OW 1
6358: ST_TO_ADDR
// for w = 1 to playerSettings [ 3 ] do
6359: LD_ADDR_VAR 0 13
6363: PUSH
6364: DOUBLE
6365: LD_INT 1
6367: DEC
6368: ST_TO_ADDR
6369: LD_EXP 12
6373: PUSH
6374: LD_INT 3
6376: ARRAY
6377: PUSH
6378: FOR_TO
6379: IFFALSE 6408
// SetTech ( 56 + w , freesides [ 1 ] , 2 ) ;
6381: LD_INT 56
6383: PUSH
6384: LD_VAR 0 13
6388: PLUS
6389: PPUSH
6390: LD_EXP 4
6394: PUSH
6395: LD_INT 1
6397: ARRAY
6398: PPUSH
6399: LD_INT 2
6401: PPUSH
6402: CALL_OW 322
6406: GO 6378
6408: POP
6409: POP
// if playerSettings [ 3 ] >= 3 then
6410: LD_EXP 12
6414: PUSH
6415: LD_INT 3
6417: ARRAY
6418: PUSH
6419: LD_INT 3
6421: GREATEREQUAL
6422: IFFALSE 6433
// DestroyUnit ( u ) ;
6424: LD_VAR 0 2
6428: PPUSH
6429: CALL_OW 65
// end ; if Setup [ 3 ] = 2 then
6433: LD_EXP 11
6437: PUSH
6438: LD_INT 3
6440: ARRAY
6441: PUSH
6442: LD_INT 2
6444: EQUAL
6445: IFFALSE 6552
// begin playerSettings := Replace ( playerSettings , 3 , playerSettings [ 3 ] + 1 ) ;
6447: LD_ADDR_EXP 12
6451: PUSH
6452: LD_EXP 12
6456: PPUSH
6457: LD_INT 3
6459: PPUSH
6460: LD_EXP 12
6464: PUSH
6465: LD_INT 3
6467: ARRAY
6468: PUSH
6469: LD_INT 1
6471: PLUS
6472: PPUSH
6473: CALL_OW 1
6477: ST_TO_ADDR
// for w = 1 to playerSettings [ 3 ] do
6478: LD_ADDR_VAR 0 13
6482: PUSH
6483: DOUBLE
6484: LD_INT 1
6486: DEC
6487: ST_TO_ADDR
6488: LD_EXP 12
6492: PUSH
6493: LD_INT 3
6495: ARRAY
6496: PUSH
6497: FOR_TO
6498: IFFALSE 6527
// SetTech ( 56 + w , freesides [ 2 ] , 2 ) ;
6500: LD_INT 56
6502: PUSH
6503: LD_VAR 0 13
6507: PLUS
6508: PPUSH
6509: LD_EXP 4
6513: PUSH
6514: LD_INT 2
6516: ARRAY
6517: PPUSH
6518: LD_INT 2
6520: PPUSH
6521: CALL_OW 322
6525: GO 6497
6527: POP
6528: POP
// if playerSettings [ 3 ] >= 3 then
6529: LD_EXP 12
6533: PUSH
6534: LD_INT 3
6536: ARRAY
6537: PUSH
6538: LD_INT 3
6540: GREATEREQUAL
6541: IFFALSE 6552
// DestroyUnit ( u ) ;
6543: LD_VAR 0 2
6547: PPUSH
6548: CALL_OW 65
// end ; exit ;
6552: GO 7701
// end ; if i = 11 then
6554: LD_VAR 0 3
6558: PUSH
6559: LD_INT 11
6561: EQUAL
6562: IFFALSE 6746
// begin uc_side = s ;
6564: LD_ADDR_OWVAR 20
6568: PUSH
6569: LD_VAR 0 4
6573: ST_TO_ADDR
// uc_nation = 0 ;
6574: LD_ADDR_OWVAR 21
6578: PUSH
6579: LD_INT 0
6581: ST_TO_ADDR
// hc_name =  ;
6582: LD_ADDR_OWVAR 26
6586: PUSH
6587: LD_STRING 
6589: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
6590: LD_ADDR_OWVAR 31
6594: PUSH
6595: LD_INT 0
6597: PUSH
6598: LD_INT 0
6600: PUSH
6601: LD_INT 0
6603: PUSH
6604: LD_INT 0
6606: PUSH
6607: EMPTY
6608: LIST
6609: LIST
6610: LIST
6611: LIST
6612: ST_TO_ADDR
// hc_class = 12 ;
6613: LD_ADDR_OWVAR 28
6617: PUSH
6618: LD_INT 12
6620: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
6621: LD_ADDR_OWVAR 27
6625: PUSH
6626: LD_INT 1
6628: PPUSH
6629: LD_INT 2
6631: PPUSH
6632: CALL_OW 12
6636: ST_TO_ADDR
// id = createhuman ;
6637: LD_ADDR_VAR 0 9
6641: PUSH
6642: CALL_OW 44
6646: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
6647: LD_ADDR_VAR 0 12
6651: PUSH
6652: LD_INT 2
6654: PUSH
6655: LD_INT 30
6657: PUSH
6658: LD_INT 0
6660: PUSH
6661: EMPTY
6662: LIST
6663: LIST
6664: PUSH
6665: LD_INT 30
6667: PUSH
6668: LD_INT 1
6670: PUSH
6671: EMPTY
6672: LIST
6673: LIST
6674: PUSH
6675: EMPTY
6676: LIST
6677: LIST
6678: LIST
6679: PUSH
6680: LD_INT 22
6682: PUSH
6683: LD_VAR 0 4
6687: PUSH
6688: EMPTY
6689: LIST
6690: LIST
6691: PUSH
6692: EMPTY
6693: LIST
6694: LIST
6695: PPUSH
6696: CALL_OW 69
6700: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
6701: CALL_OW 44
6705: PPUSH
6706: LD_VAR 0 12
6710: PUSH
6711: LD_INT 1
6713: ARRAY
6714: PPUSH
6715: CALL_OW 250
6719: PPUSH
6720: LD_VAR 0 12
6724: PUSH
6725: LD_INT 1
6727: ARRAY
6728: PPUSH
6729: CALL_OW 251
6733: PPUSH
6734: LD_INT 13
6736: PPUSH
6737: LD_INT 1
6739: PPUSH
6740: CALL_OW 50
// exit ;
6744: GO 7701
// end ; if i = 12 then
6746: LD_VAR 0 3
6750: PUSH
6751: LD_INT 12
6753: EQUAL
6754: IFFALSE 6974
// begin uc_nation = 2 ;
6756: LD_ADDR_OWVAR 21
6760: PUSH
6761: LD_INT 2
6763: ST_TO_ADDR
// vc_weapon = 49 ;
6764: LD_ADDR_OWVAR 40
6768: PUSH
6769: LD_INT 49
6771: ST_TO_ADDR
// vc_engine = 1 ;
6772: LD_ADDR_OWVAR 39
6776: PUSH
6777: LD_INT 1
6779: ST_TO_ADDR
// vc_control = 3 ;
6780: LD_ADDR_OWVAR 38
6784: PUSH
6785: LD_INT 3
6787: ST_TO_ADDR
// if Setup [ 3 ] = 1 then
6788: LD_EXP 11
6792: PUSH
6793: LD_INT 3
6795: ARRAY
6796: PUSH
6797: LD_INT 1
6799: EQUAL
6800: IFFALSE 6880
// begin SetTech ( 31 , freesides [ 1 ] , 2 ) ;
6802: LD_INT 31
6804: PPUSH
6805: LD_EXP 4
6809: PUSH
6810: LD_INT 1
6812: ARRAY
6813: PPUSH
6814: LD_INT 2
6816: PPUSH
6817: CALL_OW 322
// uc_side = freesides [ 1 ] ;
6821: LD_ADDR_OWVAR 20
6825: PUSH
6826: LD_EXP 4
6830: PUSH
6831: LD_INT 1
6833: ARRAY
6834: ST_TO_ADDR
// vc_chassis = p [ playerSettings [ 2 ] ] ;
6835: LD_ADDR_OWVAR 37
6839: PUSH
6840: LD_VAR 0 11
6844: PUSH
6845: LD_EXP 12
6849: PUSH
6850: LD_INT 2
6852: ARRAY
6853: ARRAY
6854: ST_TO_ADDR
// id = createvehicle ;
6855: LD_ADDR_VAR 0 9
6859: PUSH
6860: CALL_OW 45
6864: ST_TO_ADDR
// PlaceUnitArea ( id , botspawn , false ) ;
6865: LD_VAR 0 9
6869: PPUSH
6870: LD_INT 7
6872: PPUSH
6873: LD_INT 0
6875: PPUSH
6876: CALL_OW 49
// end ; if Setup [ 3 ] = 2 then
6880: LD_EXP 11
6884: PUSH
6885: LD_INT 3
6887: ARRAY
6888: PUSH
6889: LD_INT 2
6891: EQUAL
6892: IFFALSE 6972
// begin SetTech ( 31 , freesides [ 2 ] , 2 ) ;
6894: LD_INT 31
6896: PPUSH
6897: LD_EXP 4
6901: PUSH
6902: LD_INT 2
6904: ARRAY
6905: PPUSH
6906: LD_INT 2
6908: PPUSH
6909: CALL_OW 322
// uc_side = freesides [ 2 ] ;
6913: LD_ADDR_OWVAR 20
6917: PUSH
6918: LD_EXP 4
6922: PUSH
6923: LD_INT 2
6925: ARRAY
6926: ST_TO_ADDR
// vc_chassis = p [ playerSettings [ 2 ] ] ;
6927: LD_ADDR_OWVAR 37
6931: PUSH
6932: LD_VAR 0 11
6936: PUSH
6937: LD_EXP 12
6941: PUSH
6942: LD_INT 2
6944: ARRAY
6945: ARRAY
6946: ST_TO_ADDR
// id = createvehicle ;
6947: LD_ADDR_VAR 0 9
6951: PUSH
6952: CALL_OW 45
6956: ST_TO_ADDR
// PlaceUnitArea ( id , topspawn , false ) ;
6957: LD_VAR 0 9
6961: PPUSH
6962: LD_INT 6
6964: PPUSH
6965: LD_INT 0
6967: PPUSH
6968: CALL_OW 49
// end ; exit ;
6972: GO 7701
// end ; if i = 13 then
6974: LD_VAR 0 3
6978: PUSH
6979: LD_INT 13
6981: EQUAL
6982: IFFALSE 7168
// begin if Setup [ 3 ] = 1 then
6984: LD_EXP 11
6988: PUSH
6989: LD_INT 3
6991: ARRAY
6992: PUSH
6993: LD_INT 1
6995: EQUAL
6996: IFFALSE 7075
// begin base = FilterAllUnits ( [ [ f_side , freesides [ 2 ] ] , [ f_type , unit_human ] ] ) ;
6998: LD_ADDR_VAR 0 12
7002: PUSH
7003: LD_INT 22
7005: PUSH
7006: LD_EXP 4
7010: PUSH
7011: LD_INT 2
7013: ARRAY
7014: PUSH
7015: EMPTY
7016: LIST
7017: LIST
7018: PUSH
7019: LD_INT 21
7021: PUSH
7022: LD_INT 1
7024: PUSH
7025: EMPTY
7026: LIST
7027: LIST
7028: PUSH
7029: EMPTY
7030: LIST
7031: LIST
7032: PPUSH
7033: CALL_OW 69
7037: ST_TO_ADDR
// for i = 1 to base do
7038: LD_ADDR_VAR 0 3
7042: PUSH
7043: DOUBLE
7044: LD_INT 1
7046: DEC
7047: ST_TO_ADDR
7048: LD_VAR 0 12
7052: PUSH
7053: FOR_TO
7054: IFFALSE 7073
// DestroyUnit ( base [ i ] ) ;
7056: LD_VAR 0 12
7060: PUSH
7061: LD_VAR 0 3
7065: ARRAY
7066: PPUSH
7067: CALL_OW 65
7071: GO 7053
7073: POP
7074: POP
// end ; if Setup [ 3 ] = 2 then
7075: LD_EXP 11
7079: PUSH
7080: LD_INT 3
7082: ARRAY
7083: PUSH
7084: LD_INT 2
7086: EQUAL
7087: IFFALSE 7166
// begin base = FilterAllUnits ( [ [ f_side , freesides [ 1 ] ] , [ f_type , unit_human ] ] ) ;
7089: LD_ADDR_VAR 0 12
7093: PUSH
7094: LD_INT 22
7096: PUSH
7097: LD_EXP 4
7101: PUSH
7102: LD_INT 1
7104: ARRAY
7105: PUSH
7106: EMPTY
7107: LIST
7108: LIST
7109: PUSH
7110: LD_INT 21
7112: PUSH
7113: LD_INT 1
7115: PUSH
7116: EMPTY
7117: LIST
7118: LIST
7119: PUSH
7120: EMPTY
7121: LIST
7122: LIST
7123: PPUSH
7124: CALL_OW 69
7128: ST_TO_ADDR
// for i = 1 to base do
7129: LD_ADDR_VAR 0 3
7133: PUSH
7134: DOUBLE
7135: LD_INT 1
7137: DEC
7138: ST_TO_ADDR
7139: LD_VAR 0 12
7143: PUSH
7144: FOR_TO
7145: IFFALSE 7164
// DestroyUnit ( base [ i ] ) ;
7147: LD_VAR 0 12
7151: PUSH
7152: LD_VAR 0 3
7156: ARRAY
7157: PPUSH
7158: CALL_OW 65
7162: GO 7144
7164: POP
7165: POP
// end ; exit ;
7166: GO 7701
// end ; if i = 14 then
7168: LD_VAR 0 3
7172: PUSH
7173: LD_INT 14
7175: EQUAL
7176: IFFALSE 7495
// begin base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
7178: LD_ADDR_VAR 0 12
7182: PUSH
7183: LD_INT 2
7185: PUSH
7186: LD_INT 30
7188: PUSH
7189: LD_INT 0
7191: PUSH
7192: EMPTY
7193: LIST
7194: LIST
7195: PUSH
7196: LD_INT 30
7198: PUSH
7199: LD_INT 1
7201: PUSH
7202: EMPTY
7203: LIST
7204: LIST
7205: PUSH
7206: EMPTY
7207: LIST
7208: LIST
7209: LIST
7210: PUSH
7211: LD_INT 22
7213: PUSH
7214: LD_VAR 0 4
7218: PUSH
7219: EMPTY
7220: LIST
7221: LIST
7222: PUSH
7223: EMPTY
7224: LIST
7225: LIST
7226: PPUSH
7227: CALL_OW 69
7231: ST_TO_ADDR
// uc_side = s ;
7232: LD_ADDR_OWVAR 20
7236: PUSH
7237: LD_VAR 0 4
7241: ST_TO_ADDR
// uc_nation = 1 ;
7242: LD_ADDR_OWVAR 21
7246: PUSH
7247: LD_INT 1
7249: ST_TO_ADDR
// bc_type = 27 ;
7250: LD_ADDR_OWVAR 42
7254: PUSH
7255: LD_INT 27
7257: ST_TO_ADDR
// if HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) - 1 ) > 0 then
7258: LD_VAR 0 12
7262: PUSH
7263: LD_INT 1
7265: ARRAY
7266: PPUSH
7267: CALL_OW 250
7271: PUSH
7272: LD_INT 5
7274: MINUS
7275: PPUSH
7276: LD_VAR 0 12
7280: PUSH
7281: LD_INT 1
7283: ARRAY
7284: PPUSH
7285: CALL_OW 251
7289: PUSH
7290: LD_INT 1
7292: MINUS
7293: PPUSH
7294: CALL_OW 428
7298: PUSH
7299: LD_INT 0
7301: GREATER
7302: IFFALSE 7345
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
7304: LD_VAR 0 12
7308: PUSH
7309: LD_INT 1
7311: ARRAY
7312: PPUSH
7313: CALL_OW 250
7317: PUSH
7318: LD_INT 5
7320: MINUS
7321: PPUSH
7322: LD_VAR 0 12
7326: PUSH
7327: LD_INT 1
7329: ARRAY
7330: PPUSH
7331: CALL_OW 251
7335: PPUSH
7336: CALL_OW 428
7340: PPUSH
7341: CALL_OW 65
// if HexInfo ( GetX ( base [ 1 ] ) - 4 , GetY ( base [ 1 ] ) + 1 ) > 0 then
7345: LD_VAR 0 12
7349: PUSH
7350: LD_INT 1
7352: ARRAY
7353: PPUSH
7354: CALL_OW 250
7358: PUSH
7359: LD_INT 4
7361: MINUS
7362: PPUSH
7363: LD_VAR 0 12
7367: PUSH
7368: LD_INT 1
7370: ARRAY
7371: PPUSH
7372: CALL_OW 251
7376: PUSH
7377: LD_INT 1
7379: PLUS
7380: PPUSH
7381: CALL_OW 428
7385: PUSH
7386: LD_INT 0
7388: GREATER
7389: IFFALSE 7432
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
7391: LD_VAR 0 12
7395: PUSH
7396: LD_INT 1
7398: ARRAY
7399: PPUSH
7400: CALL_OW 250
7404: PUSH
7405: LD_INT 5
7407: MINUS
7408: PPUSH
7409: LD_VAR 0 12
7413: PUSH
7414: LD_INT 1
7416: ARRAY
7417: PPUSH
7418: CALL_OW 251
7422: PPUSH
7423: CALL_OW 428
7427: PPUSH
7428: CALL_OW 65
// k = CreateAndPlaceBuildingXYD ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) , 1 ) ;
7432: LD_ADDR_VAR 0 14
7436: PUSH
7437: LD_VAR 0 12
7441: PUSH
7442: LD_INT 1
7444: ARRAY
7445: PPUSH
7446: CALL_OW 250
7450: PUSH
7451: LD_INT 5
7453: MINUS
7454: PPUSH
7455: LD_VAR 0 12
7459: PUSH
7460: LD_INT 1
7462: ARRAY
7463: PPUSH
7464: CALL_OW 251
7468: PPUSH
7469: LD_INT 1
7471: PPUSH
7472: CALL_OW 47
7476: ST_TO_ADDR
// wait ( 0 0$35 ) ;
7477: LD_INT 1225
7479: PPUSH
7480: CALL_OW 67
// DestroyUnit ( k ) ;
7484: LD_VAR 0 14
7488: PPUSH
7489: CALL_OW 65
// exit ;
7493: GO 7701
// end ; if i = 15 then
7495: LD_VAR 0 3
7499: PUSH
7500: LD_INT 15
7502: EQUAL
7503: IFFALSE 7701
// begin uc_side = s ;
7505: LD_ADDR_OWVAR 20
7509: PUSH
7510: LD_VAR 0 4
7514: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
7515: LD_ADDR_OWVAR 21
7519: PUSH
7520: LD_EXP 11
7524: PUSH
7525: LD_INT 2
7527: ARRAY
7528: ST_TO_ADDR
// hc_name =  ;
7529: LD_ADDR_OWVAR 26
7533: PUSH
7534: LD_STRING 
7536: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
7537: LD_ADDR_OWVAR 31
7541: PUSH
7542: LD_INT 0
7544: PUSH
7545: LD_INT 0
7547: PUSH
7548: LD_INT 0
7550: PUSH
7551: LD_INT 0
7553: PUSH
7554: EMPTY
7555: LIST
7556: LIST
7557: LIST
7558: LIST
7559: ST_TO_ADDR
// hc_class = rand ( 1 , 4 ) ;
7560: LD_ADDR_OWVAR 28
7564: PUSH
7565: LD_INT 1
7567: PPUSH
7568: LD_INT 4
7570: PPUSH
7571: CALL_OW 12
7575: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
7576: LD_ADDR_OWVAR 27
7580: PUSH
7581: LD_INT 1
7583: PPUSH
7584: LD_INT 2
7586: PPUSH
7587: CALL_OW 12
7591: ST_TO_ADDR
// id = createhuman ;
7592: LD_ADDR_VAR 0 9
7596: PUSH
7597: CALL_OW 44
7601: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
7602: LD_ADDR_VAR 0 12
7606: PUSH
7607: LD_INT 2
7609: PUSH
7610: LD_INT 30
7612: PUSH
7613: LD_INT 0
7615: PUSH
7616: EMPTY
7617: LIST
7618: LIST
7619: PUSH
7620: LD_INT 30
7622: PUSH
7623: LD_INT 1
7625: PUSH
7626: EMPTY
7627: LIST
7628: LIST
7629: PUSH
7630: EMPTY
7631: LIST
7632: LIST
7633: LIST
7634: PUSH
7635: LD_INT 22
7637: PUSH
7638: LD_VAR 0 4
7642: PUSH
7643: EMPTY
7644: LIST
7645: LIST
7646: PUSH
7647: EMPTY
7648: LIST
7649: LIST
7650: PPUSH
7651: CALL_OW 69
7655: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
7656: CALL_OW 44
7660: PPUSH
7661: LD_VAR 0 12
7665: PUSH
7666: LD_INT 1
7668: ARRAY
7669: PPUSH
7670: CALL_OW 250
7674: PPUSH
7675: LD_VAR 0 12
7679: PUSH
7680: LD_INT 1
7682: ARRAY
7683: PPUSH
7684: CALL_OW 251
7688: PPUSH
7689: LD_INT 13
7691: PPUSH
7692: LD_INT 1
7694: PPUSH
7695: CALL_OW 50
// exit ;
7699: GO 7701
// end ; end ; end ; end ; end ;
7701: PPOPN 15
7703: END
// every 0 0$01 do var i , k ;
7704: GO 7706
7706: DISABLE
7707: LD_INT 0
7709: PPUSH
7710: PPUSH
// begin i = 203 ;
7711: LD_ADDR_VAR 0 1
7715: PUSH
7716: LD_INT 203
7718: ST_TO_ADDR
// k = 247 ;
7719: LD_ADDR_VAR 0 2
7723: PUSH
7724: LD_INT 247
7726: ST_TO_ADDR
// repeat wait ( 0 0$0.1 ) ;
7727: LD_INT 4
7729: PPUSH
7730: CALL_OW 67
// SetAreaMapShow ( botspawn , 2 ) ;
7734: LD_INT 7
7736: PPUSH
7737: LD_INT 2
7739: PPUSH
7740: CALL_OW 424
// SetAreaMapShow ( topspawn , 2 ) ;
7744: LD_INT 6
7746: PPUSH
7747: LD_INT 2
7749: PPUSH
7750: CALL_OW 424
// MoveAreaXY ( topspawn , i , 14 ) ;
7754: LD_INT 6
7756: PPUSH
7757: LD_VAR 0 1
7761: PPUSH
7762: LD_INT 14
7764: PPUSH
7765: CALL_OW 425
// MoveAreaXY ( botspawn , k , 102 ) ;
7769: LD_INT 7
7771: PPUSH
7772: LD_VAR 0 2
7776: PPUSH
7777: LD_INT 102
7779: PPUSH
7780: CALL_OW 425
// if k = 227 then
7784: LD_VAR 0 2
7788: PUSH
7789: LD_INT 227
7791: EQUAL
7792: IFFALSE 7802
// k = 247 ;
7794: LD_ADDR_VAR 0 2
7798: PUSH
7799: LD_INT 247
7801: ST_TO_ADDR
// if i = 183 then
7802: LD_VAR 0 1
7806: PUSH
7807: LD_INT 183
7809: EQUAL
7810: IFFALSE 7820
// i = 203 ;
7812: LD_ADDR_VAR 0 1
7816: PUSH
7817: LD_INT 203
7819: ST_TO_ADDR
// i = i - 1 ;
7820: LD_ADDR_VAR 0 1
7824: PUSH
7825: LD_VAR 0 1
7829: PUSH
7830: LD_INT 1
7832: MINUS
7833: ST_TO_ADDR
// k = k - 1 ;
7834: LD_ADDR_VAR 0 2
7838: PUSH
7839: LD_VAR 0 2
7843: PUSH
7844: LD_INT 1
7846: MINUS
7847: ST_TO_ADDR
// until i = 400 end ;
7848: LD_VAR 0 1
7852: PUSH
7853: LD_INT 400
7855: EQUAL
7856: IFFALSE 7727
7858: PPOPN 2
7860: END
// every 0 0$03 do var i , l , c ;
7861: GO 7863
7863: DISABLE
7864: LD_INT 0
7866: PPUSH
7867: PPUSH
7868: PPUSH
// begin if FilterAllUnits ( [ [ f_side , Setup [ 1 ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) = 0 then
7869: LD_INT 22
7871: PUSH
7872: LD_EXP 11
7876: PUSH
7877: LD_INT 1
7879: ARRAY
7880: PUSH
7881: EMPTY
7882: LIST
7883: LIST
7884: PUSH
7885: LD_INT 2
7887: PUSH
7888: LD_INT 30
7890: PUSH
7891: LD_INT 0
7893: PUSH
7894: EMPTY
7895: LIST
7896: LIST
7897: PUSH
7898: LD_INT 30
7900: PUSH
7901: LD_INT 1
7903: PUSH
7904: EMPTY
7905: LIST
7906: LIST
7907: PUSH
7908: EMPTY
7909: LIST
7910: LIST
7911: LIST
7912: PUSH
7913: EMPTY
7914: LIST
7915: LIST
7916: PPUSH
7917: CALL_OW 69
7921: PUSH
7922: LD_INT 0
7924: EQUAL
7925: IFFALSE 7934
// YouLost ( depo ) ;
7927: LD_STRING depo
7929: PPUSH
7930: CALL_OW 104
// if FilterAllUnits ( [ [ f_side , freesides [ 3 ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) = 0 then
7934: LD_INT 22
7936: PUSH
7937: LD_EXP 4
7941: PUSH
7942: LD_INT 3
7944: ARRAY
7945: PUSH
7946: EMPTY
7947: LIST
7948: LIST
7949: PUSH
7950: LD_INT 2
7952: PUSH
7953: LD_INT 30
7955: PUSH
7956: LD_INT 0
7958: PUSH
7959: EMPTY
7960: LIST
7961: LIST
7962: PUSH
7963: LD_INT 30
7965: PUSH
7966: LD_INT 1
7968: PUSH
7969: EMPTY
7970: LIST
7971: LIST
7972: PUSH
7973: EMPTY
7974: LIST
7975: LIST
7976: LIST
7977: PUSH
7978: EMPTY
7979: LIST
7980: LIST
7981: PPUSH
7982: CALL_OW 69
7986: PUSH
7987: LD_INT 0
7989: EQUAL
7990: IFFALSE 7996
// YouWin ;
7992: CALL_OW 103
// enable ;
7996: ENABLE
// end ;
7997: PPOPN 3
7999: END
// on UnitDestroyed ( u ) do var i , k ;
8000: LD_INT 0
8002: PPUSH
8003: PPUSH
// begin if GetType ( u ) = unit_human then
8004: LD_VAR 0 1
8008: PPUSH
8009: CALL_OW 247
8013: PUSH
8014: LD_INT 1
8016: EQUAL
8017: IFFALSE 8138
// for i = 1 to playersides do
8019: LD_ADDR_VAR 0 2
8023: PUSH
8024: DOUBLE
8025: LD_INT 1
8027: DEC
8028: ST_TO_ADDR
8029: LD_EXP 5
8033: PUSH
8034: FOR_TO
8035: IFFALSE 8136
// if GetSide ( u ) = playersides [ i ] then
8037: LD_VAR 0 1
8041: PPUSH
8042: CALL_OW 255
8046: PUSH
8047: LD_EXP 5
8051: PUSH
8052: LD_VAR 0 2
8056: ARRAY
8057: EQUAL
8058: IFFALSE 8134
// begin if GetClass ( u ) = 12 then
8060: LD_VAR 0 1
8064: PPUSH
8065: CALL_OW 257
8069: PUSH
8070: LD_INT 12
8072: EQUAL
8073: IFFALSE 8081
// begin exit ;
8075: POP
8076: POP
8077: GO 8138
// end else
8079: GO 8134
// begin queue := Replace ( queue , i , queue [ i ] + 1 ) ;
8081: LD_ADDR_EXP 6
8085: PUSH
8086: LD_EXP 6
8090: PPUSH
8091: LD_VAR 0 2
8095: PPUSH
8096: LD_EXP 6
8100: PUSH
8101: LD_VAR 0 2
8105: ARRAY
8106: PUSH
8107: LD_INT 1
8109: PLUS
8110: PPUSH
8111: CALL_OW 1
8115: ST_TO_ADDR
// if Setup [ 5 ] <> 1 then
8116: LD_EXP 11
8120: PUSH
8121: LD_INT 5
8123: ARRAY
8124: PUSH
8125: LD_INT 1
8127: NONEQUAL
8128: IFFALSE 8134
// PrepareRespawn ;
8130: CALL 8141 0 0
// end ; end ;
8134: GO 8034
8136: POP
8137: POP
// end ;
8138: PPOPN 3
8140: END
// export function PrepareRespawn ; var depots , b , i , k , l , clock ; begin
8141: LD_INT 0
8143: PPUSH
8144: PPUSH
8145: PPUSH
8146: PPUSH
8147: PPUSH
8148: PPUSH
8149: PPUSH
// clock = 2 2$30 ;
8150: LD_ADDR_VAR 0 7
8154: PUSH
8155: LD_INT 5250
8157: ST_TO_ADDR
// if Setup [ 5 ] = 2 then
8158: LD_EXP 11
8162: PUSH
8163: LD_INT 5
8165: ARRAY
8166: PUSH
8167: LD_INT 2
8169: EQUAL
8170: IFFALSE 8180
// clock = 4 4$30 ;
8172: LD_ADDR_VAR 0 7
8176: PUSH
8177: LD_INT 9450
8179: ST_TO_ADDR
// if Setup [ 5 ] = 3 then
8180: LD_EXP 11
8184: PUSH
8185: LD_INT 5
8187: ARRAY
8188: PUSH
8189: LD_INT 3
8191: EQUAL
8192: IFFALSE 8202
// clock = 2 2$00 ;
8194: LD_ADDR_VAR 0 7
8198: PUSH
8199: LD_INT 4200
8201: ST_TO_ADDR
// wait ( clock ) ;
8202: LD_VAR 0 7
8206: PPUSH
8207: CALL_OW 67
// for i = 1 to playersides do
8211: LD_ADDR_VAR 0 4
8215: PUSH
8216: DOUBLE
8217: LD_INT 1
8219: DEC
8220: ST_TO_ADDR
8221: LD_EXP 5
8225: PUSH
8226: FOR_TO
8227: IFFALSE 8569
// if queue [ i ] > 0 then
8229: LD_EXP 6
8233: PUSH
8234: LD_VAR 0 4
8238: ARRAY
8239: PUSH
8240: LD_INT 0
8242: GREATER
8243: IFFALSE 8567
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
8245: LD_ADDR_VAR 0 2
8249: PUSH
8250: LD_INT 2
8252: PUSH
8253: LD_INT 30
8255: PUSH
8256: LD_INT 0
8258: PUSH
8259: EMPTY
8260: LIST
8261: LIST
8262: PUSH
8263: LD_INT 30
8265: PUSH
8266: LD_INT 1
8268: PUSH
8269: EMPTY
8270: LIST
8271: LIST
8272: PUSH
8273: EMPTY
8274: LIST
8275: LIST
8276: LIST
8277: PUSH
8278: LD_INT 22
8280: PUSH
8281: LD_EXP 5
8285: PUSH
8286: LD_VAR 0 4
8290: ARRAY
8291: PUSH
8292: EMPTY
8293: LIST
8294: LIST
8295: PUSH
8296: EMPTY
8297: LIST
8298: LIST
8299: PPUSH
8300: CALL_OW 69
8304: ST_TO_ADDR
// if depots then
8305: LD_VAR 0 2
8309: IFFALSE 8556
// begin for l = 1 to queue [ i ] do
8311: LD_ADDR_VAR 0 6
8315: PUSH
8316: DOUBLE
8317: LD_INT 1
8319: DEC
8320: ST_TO_ADDR
8321: LD_EXP 6
8325: PUSH
8326: LD_VAR 0 4
8330: ARRAY
8331: PUSH
8332: FOR_TO
8333: IFFALSE 8529
// begin b := depots [ Rand ( 1 , depots ) ] ;
8335: LD_ADDR_VAR 0 3
8339: PUSH
8340: LD_VAR 0 2
8344: PUSH
8345: LD_INT 1
8347: PPUSH
8348: LD_VAR 0 2
8352: PPUSH
8353: CALL_OW 12
8357: ARRAY
8358: ST_TO_ADDR
// uc_side = playersides [ i ] ;
8359: LD_ADDR_OWVAR 20
8363: PUSH
8364: LD_EXP 5
8368: PUSH
8369: LD_VAR 0 4
8373: ARRAY
8374: ST_TO_ADDR
// uc_nation = setup [ 2 ] ;
8375: LD_ADDR_OWVAR 21
8379: PUSH
8380: LD_EXP 11
8384: PUSH
8385: LD_INT 2
8387: ARRAY
8388: ST_TO_ADDR
// hc_name =  ;
8389: LD_ADDR_OWVAR 26
8393: PUSH
8394: LD_STRING 
8396: ST_TO_ADDR
// hc_skills = [ waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 ] ;
8397: LD_ADDR_OWVAR 31
8401: PUSH
8402: LD_EXP 1
8406: PUSH
8407: LD_INT 5
8409: DIVREAL
8410: PUSH
8411: LD_INT 11
8413: MOD
8414: PUSH
8415: LD_EXP 1
8419: PUSH
8420: LD_INT 5
8422: DIVREAL
8423: PUSH
8424: LD_INT 11
8426: MOD
8427: PUSH
8428: LD_EXP 1
8432: PUSH
8433: LD_INT 5
8435: DIVREAL
8436: PUSH
8437: LD_INT 11
8439: MOD
8440: PUSH
8441: LD_EXP 1
8445: PUSH
8446: LD_INT 5
8448: DIVREAL
8449: PUSH
8450: LD_INT 11
8452: MOD
8453: PUSH
8454: EMPTY
8455: LIST
8456: LIST
8457: LIST
8458: LIST
8459: ST_TO_ADDR
// hc_class = Rand ( 1 , 4 ) ;
8460: LD_ADDR_OWVAR 28
8464: PUSH
8465: LD_INT 1
8467: PPUSH
8468: LD_INT 4
8470: PPUSH
8471: CALL_OW 12
8475: ST_TO_ADDR
// hc_sex = Rand ( 1 , 2 ) ;
8476: LD_ADDR_OWVAR 27
8480: PUSH
8481: LD_INT 1
8483: PPUSH
8484: LD_INT 2
8486: PPUSH
8487: CALL_OW 12
8491: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
8492: CALL_OW 44
8496: PPUSH
8497: LD_VAR 0 3
8501: PPUSH
8502: CALL_OW 250
8506: PPUSH
8507: LD_VAR 0 3
8511: PPUSH
8512: CALL_OW 251
8516: PPUSH
8517: LD_INT 13
8519: PPUSH
8520: LD_INT 1
8522: PPUSH
8523: CALL_OW 50
// end ;
8527: GO 8332
8529: POP
8530: POP
// queue := Replace ( queue , i , 0 ) ;
8531: LD_ADDR_EXP 6
8535: PUSH
8536: LD_EXP 6
8540: PPUSH
8541: LD_VAR 0 4
8545: PPUSH
8546: LD_INT 0
8548: PPUSH
8549: CALL_OW 1
8553: ST_TO_ADDR
// end else
8554: GO 8567
// begin wait ( 1 1$00 ) ;
8556: LD_INT 2100
8558: PPUSH
8559: CALL_OW 67
// PrepareRespawn ;
8563: CALL 8141 0 0
// end ; end ;
8567: GO 8226
8569: POP
8570: POP
// end ;
8571: LD_VAR 0 1
8575: RET
// export function getUnits ( side ) ; begin
8576: LD_INT 0
8578: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] ] ) ;
8579: LD_ADDR_VAR 0 2
8583: PUSH
8584: LD_INT 21
8586: PUSH
8587: LD_INT 1
8589: PUSH
8590: EMPTY
8591: LIST
8592: LIST
8593: PUSH
8594: LD_INT 22
8596: PUSH
8597: LD_VAR 0 1
8601: PUSH
8602: EMPTY
8603: LIST
8604: LIST
8605: PUSH
8606: EMPTY
8607: LIST
8608: LIST
8609: PPUSH
8610: CALL_OW 69
8614: ST_TO_ADDR
// end ;
8615: LD_VAR 0 2
8619: RET
// export function getUnitsArea ( side , area ) ; begin
8620: LD_INT 0
8622: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] , [ f_inarea , area ] ] ) ;
8623: LD_ADDR_VAR 0 3
8627: PUSH
8628: LD_INT 21
8630: PUSH
8631: LD_INT 1
8633: PUSH
8634: EMPTY
8635: LIST
8636: LIST
8637: PUSH
8638: LD_INT 22
8640: PUSH
8641: LD_VAR 0 1
8645: PUSH
8646: EMPTY
8647: LIST
8648: LIST
8649: PUSH
8650: LD_INT 95
8652: PUSH
8653: LD_VAR 0 2
8657: PUSH
8658: EMPTY
8659: LIST
8660: LIST
8661: PUSH
8662: EMPTY
8663: LIST
8664: LIST
8665: LIST
8666: PPUSH
8667: CALL_OW 69
8671: ST_TO_ADDR
// end ;
8672: LD_VAR 0 3
8676: RET
// export function getClassUnitsOutside ( class_name , side ) ; begin
8677: LD_INT 0
8679: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] , [ f_outside ] , [ f_not , [ f_hasTask ] ] ] ) ;
8680: LD_ADDR_VAR 0 3
8684: PUSH
8685: LD_INT 25
8687: PUSH
8688: LD_VAR 0 1
8692: PUSH
8693: EMPTY
8694: LIST
8695: LIST
8696: PUSH
8697: LD_INT 22
8699: PUSH
8700: LD_VAR 0 2
8704: PUSH
8705: EMPTY
8706: LIST
8707: LIST
8708: PUSH
8709: LD_INT 56
8711: PUSH
8712: EMPTY
8713: LIST
8714: PUSH
8715: LD_INT 3
8717: PUSH
8718: LD_INT 60
8720: PUSH
8721: EMPTY
8722: LIST
8723: PUSH
8724: EMPTY
8725: LIST
8726: LIST
8727: PUSH
8728: EMPTY
8729: LIST
8730: LIST
8731: LIST
8732: LIST
8733: PPUSH
8734: CALL_OW 69
8738: ST_TO_ADDR
// end ;
8739: LD_VAR 0 3
8743: RET
// export function getClassUnits ( class_name , side ) ; begin
8744: LD_INT 0
8746: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] ] ) ;
8747: LD_ADDR_VAR 0 3
8751: PUSH
8752: LD_INT 25
8754: PUSH
8755: LD_VAR 0 1
8759: PUSH
8760: EMPTY
8761: LIST
8762: LIST
8763: PUSH
8764: LD_INT 22
8766: PUSH
8767: LD_VAR 0 2
8771: PUSH
8772: EMPTY
8773: LIST
8774: LIST
8775: PUSH
8776: EMPTY
8777: LIST
8778: LIST
8779: PPUSH
8780: CALL_OW 69
8784: ST_TO_ADDR
// end ;
8785: LD_VAR 0 3
8789: RET
// export function getBuildings ( building , side ) ; begin
8790: LD_INT 0
8792: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] ] ) ;
8793: LD_ADDR_VAR 0 3
8797: PUSH
8798: LD_INT 30
8800: PUSH
8801: LD_VAR 0 1
8805: PUSH
8806: EMPTY
8807: LIST
8808: LIST
8809: PUSH
8810: LD_INT 22
8812: PUSH
8813: LD_VAR 0 2
8817: PUSH
8818: EMPTY
8819: LIST
8820: LIST
8821: PUSH
8822: EMPTY
8823: LIST
8824: LIST
8825: PPUSH
8826: CALL_OW 69
8830: ST_TO_ADDR
// end ;
8831: LD_VAR 0 3
8835: RET
// export function getEmptyBuildings ( building , side ) ; begin
8836: LD_INT 0
8838: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] , [ f_empty ] ] ) ;
8839: LD_ADDR_VAR 0 3
8843: PUSH
8844: LD_INT 30
8846: PUSH
8847: LD_VAR 0 1
8851: PUSH
8852: EMPTY
8853: LIST
8854: LIST
8855: PUSH
8856: LD_INT 22
8858: PUSH
8859: LD_VAR 0 2
8863: PUSH
8864: EMPTY
8865: LIST
8866: LIST
8867: PUSH
8868: LD_INT 58
8870: PUSH
8871: EMPTY
8872: LIST
8873: PUSH
8874: EMPTY
8875: LIST
8876: LIST
8877: LIST
8878: PPUSH
8879: CALL_OW 69
8883: ST_TO_ADDR
// end ;
8884: LD_VAR 0 3
8888: RET
// export function getBuiltBuildings ( building , side ) ; begin
8889: LD_INT 0
8891: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] , [ f_constructed ] ] ) ;
8892: LD_ADDR_VAR 0 3
8896: PUSH
8897: LD_INT 30
8899: PUSH
8900: LD_VAR 0 1
8904: PUSH
8905: EMPTY
8906: LIST
8907: LIST
8908: PUSH
8909: LD_INT 22
8911: PUSH
8912: LD_VAR 0 2
8916: PUSH
8917: EMPTY
8918: LIST
8919: LIST
8920: PUSH
8921: LD_INT 57
8923: PUSH
8924: EMPTY
8925: LIST
8926: PUSH
8927: EMPTY
8928: LIST
8929: LIST
8930: LIST
8931: PPUSH
8932: CALL_OW 69
8936: ST_TO_ADDR
// end ;
8937: LD_VAR 0 3
8941: RET
// export function getAllBuildings ( side ) ; begin
8942: LD_INT 0
8944: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , side ] ] ) ;
8945: LD_ADDR_VAR 0 2
8949: PUSH
8950: LD_INT 21
8952: PUSH
8953: LD_INT 3
8955: PUSH
8956: EMPTY
8957: LIST
8958: LIST
8959: PUSH
8960: LD_INT 22
8962: PUSH
8963: LD_VAR 0 1
8967: PUSH
8968: EMPTY
8969: LIST
8970: LIST
8971: PUSH
8972: EMPTY
8973: LIST
8974: LIST
8975: PPUSH
8976: CALL_OW 69
8980: ST_TO_ADDR
// end ;
8981: LD_VAR 0 2
8985: RET
// export function getUpgradedBuildings ( building , side ) ; begin
8986: LD_INT 0
8988: PPUSH
// case building of b_armoury :
8989: LD_VAR 0 1
8993: PUSH
8994: LD_INT 4
8996: DOUBLE
8997: EQUAL
8998: IFTRUE 9002
9000: GO 9041
9002: POP
// begin result := FilterAllUnits ( [ [ f_btype , b_barracks ] , [ f_side , side ] ] ) ;
9003: LD_ADDR_VAR 0 3
9007: PUSH
9008: LD_INT 30
9010: PUSH
9011: LD_INT 5
9013: PUSH
9014: EMPTY
9015: LIST
9016: LIST
9017: PUSH
9018: LD_INT 22
9020: PUSH
9021: LD_VAR 0 2
9025: PUSH
9026: EMPTY
9027: LIST
9028: LIST
9029: PUSH
9030: EMPTY
9031: LIST
9032: LIST
9033: PPUSH
9034: CALL_OW 69
9038: ST_TO_ADDR
// end ; b_depot :
9039: GO 9089
9041: LD_INT 0
9043: DOUBLE
9044: EQUAL
9045: IFTRUE 9049
9047: GO 9088
9049: POP
// begin result := FilterAllUnits ( [ [ f_btype , b_warehouse ] , [ f_side , side ] ] ) ;
9050: LD_ADDR_VAR 0 3
9054: PUSH
9055: LD_INT 30
9057: PUSH
9058: LD_INT 1
9060: PUSH
9061: EMPTY
9062: LIST
9063: LIST
9064: PUSH
9065: LD_INT 22
9067: PUSH
9068: LD_VAR 0 2
9072: PUSH
9073: EMPTY
9074: LIST
9075: LIST
9076: PUSH
9077: EMPTY
9078: LIST
9079: LIST
9080: PPUSH
9081: CALL_OW 69
9085: ST_TO_ADDR
// end ; end ;
9086: GO 9089
9088: POP
// if result = 0 then
9089: LD_VAR 0 3
9093: PUSH
9094: LD_INT 0
9096: EQUAL
9097: IFFALSE 9106
// result := [ ] ;
9099: LD_ADDR_VAR 0 3
9103: PUSH
9104: EMPTY
9105: ST_TO_ADDR
// end ;
9106: LD_VAR 0 3
9110: RET
// every 0 0$0.35 do
9111: GO 9113
9113: DISABLE
// if Setup [ 7 ] = 1 then
9114: LD_EXP 11
9118: PUSH
9119: LD_INT 7
9121: ARRAY
9122: PUSH
9123: LD_INT 1
9125: EQUAL
9126: IFFALSE 9142
// begin AI ( freesides [ 3 ] ) ;
9128: LD_EXP 4
9132: PUSH
9133: LD_INT 3
9135: ARRAY
9136: PPUSH
9137: CALL 9143 0 1
// enable ;
9141: ENABLE
// end ;
9142: END
// export function AI ( s ) ; var soldier , engineer , mechanic , scientist ; var i , j , k ; var AIRoute , isRouteDone ; var building , depot , res ; begin
9143: LD_INT 0
9145: PPUSH
9146: PPUSH
9147: PPUSH
9148: PPUSH
9149: PPUSH
9150: PPUSH
9151: PPUSH
9152: PPUSH
9153: PPUSH
9154: PPUSH
9155: PPUSH
9156: PPUSH
9157: PPUSH
// AIRoute = [ ] ;
9158: LD_ADDR_VAR 0 10
9162: PUSH
9163: EMPTY
9164: ST_TO_ADDR
// soldier = getClassUnits ( class_soldier , s ) ;
9165: LD_ADDR_VAR 0 3
9169: PUSH
9170: LD_INT 1
9172: PPUSH
9173: LD_VAR 0 1
9177: PPUSH
9178: CALL 8744 0 2
9182: ST_TO_ADDR
// engineer = getClassUnits ( class_engineer , s ) ;
9183: LD_ADDR_VAR 0 4
9187: PUSH
9188: LD_INT 2
9190: PPUSH
9191: LD_VAR 0 1
9195: PPUSH
9196: CALL 8744 0 2
9200: ST_TO_ADDR
// mechanic = getClassUnits ( class_mechanic , s ) ;
9201: LD_ADDR_VAR 0 5
9205: PUSH
9206: LD_INT 3
9208: PPUSH
9209: LD_VAR 0 1
9213: PPUSH
9214: CALL 8744 0 2
9218: ST_TO_ADDR
// scientist = getClassUnits ( class_scientistic , s ) ;
9219: LD_ADDR_VAR 0 6
9223: PUSH
9224: LD_INT 4
9226: PPUSH
9227: LD_VAR 0 1
9231: PPUSH
9232: CALL 8744 0 2
9236: ST_TO_ADDR
// depot = getBuildings ( b_depot , s ) ^ getBuildings ( b_warehouse , s ) ;
9237: LD_ADDR_VAR 0 13
9241: PUSH
9242: LD_INT 0
9244: PPUSH
9245: LD_VAR 0 1
9249: PPUSH
9250: CALL 8790 0 2
9254: PUSH
9255: LD_INT 1
9257: PPUSH
9258: LD_VAR 0 1
9262: PPUSH
9263: CALL 8790 0 2
9267: ADD
9268: ST_TO_ADDR
// if not depot then
9269: LD_VAR 0 13
9273: NOT
9274: IFFALSE 9278
// exit ;
9276: GO 11215
// if not engineer then
9278: LD_VAR 0 4
9282: NOT
9283: IFFALSE 9492
// if scientist then
9285: LD_VAR 0 6
9289: IFFALSE 9349
// begin for i in scientist do
9291: LD_ADDR_VAR 0 7
9295: PUSH
9296: LD_VAR 0 6
9300: PUSH
9301: FOR_IN
9302: IFFALSE 9345
// begin comEnterUnit ( i , depot [ 1 ] ) ;
9304: LD_VAR 0 7
9308: PPUSH
9309: LD_VAR 0 13
9313: PUSH
9314: LD_INT 1
9316: ARRAY
9317: PPUSH
9318: CALL_OW 120
// AddComChangeProfession ( i , 2 ) ;
9322: LD_VAR 0 7
9326: PPUSH
9327: LD_INT 2
9329: PPUSH
9330: CALL_OW 183
// AddComExitBuilding ( i ) ;
9334: LD_VAR 0 7
9338: PPUSH
9339: CALL_OW 182
// end ;
9343: GO 9301
9345: POP
9346: POP
// end else
9347: GO 9492
// if mechanic then
9349: LD_VAR 0 5
9353: IFFALSE 9413
// begin for i in mechanic do
9355: LD_ADDR_VAR 0 7
9359: PUSH
9360: LD_VAR 0 5
9364: PUSH
9365: FOR_IN
9366: IFFALSE 9409
// begin comEnterUnit ( i , depot [ 1 ] ) ;
9368: LD_VAR 0 7
9372: PPUSH
9373: LD_VAR 0 13
9377: PUSH
9378: LD_INT 1
9380: ARRAY
9381: PPUSH
9382: CALL_OW 120
// AddComChangeProfession ( i , 2 ) ;
9386: LD_VAR 0 7
9390: PPUSH
9391: LD_INT 2
9393: PPUSH
9394: CALL_OW 183
// AddComExitBuilding ( i ) ;
9398: LD_VAR 0 7
9402: PPUSH
9403: CALL_OW 182
// end ;
9407: GO 9365
9409: POP
9410: POP
// end else
9411: GO 9492
// if soldier then
9413: LD_VAR 0 3
9417: IFFALSE 9477
// begin for i in soldier do
9419: LD_ADDR_VAR 0 7
9423: PUSH
9424: LD_VAR 0 3
9428: PUSH
9429: FOR_IN
9430: IFFALSE 9473
// begin comEnterUnit ( i , depot [ 1 ] ) ;
9432: LD_VAR 0 7
9436: PPUSH
9437: LD_VAR 0 13
9441: PUSH
9442: LD_INT 1
9444: ARRAY
9445: PPUSH
9446: CALL_OW 120
// AddComChangeProfession ( i , 2 ) ;
9450: LD_VAR 0 7
9454: PPUSH
9455: LD_INT 2
9457: PPUSH
9458: CALL_OW 183
// AddComExitBuilding ( i ) ;
9462: LD_VAR 0 7
9466: PPUSH
9467: CALL_OW 182
// end ;
9471: GO 9429
9473: POP
9474: POP
// end else
9475: GO 9492
// building = getAllBuildings ( s ) ;
9477: LD_ADDR_VAR 0 12
9481: PUSH
9482: LD_VAR 0 1
9486: PPUSH
9487: CALL 8942 0 1
9491: ST_TO_ADDR
// if engineer then
9492: LD_VAR 0 4
9496: IFFALSE 9604
// if building then
9498: LD_VAR 0 12
9502: IFFALSE 9604
// for i in engineer do
9504: LD_ADDR_VAR 0 7
9508: PUSH
9509: LD_VAR 0 4
9513: PUSH
9514: FOR_IN
9515: IFFALSE 9602
// begin for j in building do
9517: LD_ADDR_VAR 0 8
9521: PUSH
9522: LD_VAR 0 12
9526: PUSH
9527: FOR_IN
9528: IFFALSE 9561
// if getLives ( j ) < 1000 then
9530: LD_VAR 0 8
9534: PPUSH
9535: CALL_OW 256
9539: PUSH
9540: LD_INT 1000
9542: LESS
9543: IFFALSE 9559
// comRepairBuilding ( i , j ) ;
9545: LD_VAR 0 7
9549: PPUSH
9550: LD_VAR 0 8
9554: PPUSH
9555: CALL_OW 130
9559: GO 9527
9561: POP
9562: POP
// addComMoveXY ( i , getX ( depot [ 1 ] ) , getY ( depot [ 1 ] ) ) ;
9563: LD_VAR 0 7
9567: PPUSH
9568: LD_VAR 0 13
9572: PUSH
9573: LD_INT 1
9575: ARRAY
9576: PPUSH
9577: CALL_OW 250
9581: PPUSH
9582: LD_VAR 0 13
9586: PUSH
9587: LD_INT 1
9589: ARRAY
9590: PPUSH
9591: CALL_OW 251
9595: PPUSH
9596: CALL_OW 171
// end ;
9600: GO 9514
9602: POP
9603: POP
// if not getBuildings ( b_factory , s ) and not getBuildings ( b_workshop , s ) then
9604: LD_INT 3
9606: PPUSH
9607: LD_VAR 0 1
9611: PPUSH
9612: CALL 8790 0 2
9616: NOT
9617: PUSH
9618: LD_INT 2
9620: PPUSH
9621: LD_VAR 0 1
9625: PPUSH
9626: CALL 8790 0 2
9630: NOT
9631: AND
9632: IFFALSE 9650
// soldier = soldier ^ mechanic ;
9634: LD_ADDR_VAR 0 3
9638: PUSH
9639: LD_VAR 0 3
9643: PUSH
9644: LD_VAR 0 5
9648: ADD
9649: ST_TO_ADDR
// building = getBuildings ( b_armoury , s ) ^ getBuildings ( b_barracks , s ) ;
9650: LD_ADDR_VAR 0 12
9654: PUSH
9655: LD_INT 4
9657: PPUSH
9658: LD_VAR 0 1
9662: PPUSH
9663: CALL 8790 0 2
9667: PUSH
9668: LD_INT 5
9670: PPUSH
9671: LD_VAR 0 1
9675: PPUSH
9676: CALL 8790 0 2
9680: ADD
9681: ST_TO_ADDR
// if building and soldier then
9682: LD_VAR 0 12
9686: PUSH
9687: LD_VAR 0 3
9691: AND
9692: IFFALSE 9787
// if UnitsInside ( building [ 1 ] ) < 6 then
9694: LD_VAR 0 12
9698: PUSH
9699: LD_INT 1
9701: ARRAY
9702: PPUSH
9703: CALL_OW 313
9707: PUSH
9708: LD_INT 6
9710: LESS
9711: IFFALSE 9787
// for i in soldier do
9713: LD_ADDR_VAR 0 7
9717: PUSH
9718: LD_VAR 0 3
9722: PUSH
9723: FOR_IN
9724: IFFALSE 9785
// begin if not IsInUnit ( i ) then
9726: LD_VAR 0 7
9730: PPUSH
9731: CALL_OW 310
9735: NOT
9736: IFFALSE 9756
// comEnterUnit ( i , building [ 1 ] ) ;
9738: LD_VAR 0 7
9742: PPUSH
9743: LD_VAR 0 12
9747: PUSH
9748: LD_INT 1
9750: ARRAY
9751: PPUSH
9752: CALL_OW 120
// if getClass ( i ) <> 1 then
9756: LD_VAR 0 7
9760: PPUSH
9761: CALL_OW 257
9765: PUSH
9766: LD_INT 1
9768: NONEQUAL
9769: IFFALSE 9783
// addComChangeProfession ( i , 1 ) ;
9771: LD_VAR 0 7
9775: PPUSH
9776: LD_INT 1
9778: PPUSH
9779: CALL_OW 183
// end ;
9783: GO 9723
9785: POP
9786: POP
// if not building then
9787: LD_VAR 0 12
9791: NOT
9792: IFFALSE 9912
// begin for i in soldier do
9794: LD_ADDR_VAR 0 7
9798: PUSH
9799: LD_VAR 0 3
9803: PUSH
9804: FOR_IN
9805: IFFALSE 9850
// comAgressiveMove ( i , getX ( depot [ 1 ] + 10 ) , getY ( depot [ 1 ] ) ) ;
9807: LD_VAR 0 7
9811: PPUSH
9812: LD_VAR 0 13
9816: PUSH
9817: LD_INT 1
9819: ARRAY
9820: PUSH
9821: LD_INT 10
9823: PLUS
9824: PPUSH
9825: CALL_OW 250
9829: PPUSH
9830: LD_VAR 0 13
9834: PUSH
9835: LD_INT 1
9837: ARRAY
9838: PPUSH
9839: CALL_OW 251
9843: PPUSH
9844: CALL_OW 114
9848: GO 9804
9850: POP
9851: POP
// for i in scientist do
9852: LD_ADDR_VAR 0 7
9856: PUSH
9857: LD_VAR 0 6
9861: PUSH
9862: FOR_IN
9863: IFFALSE 9908
// comAgressiveMove ( i , getX ( depot [ 1 ] + 5 ) , getY ( depot [ 1 ] ) ) ;
9865: LD_VAR 0 7
9869: PPUSH
9870: LD_VAR 0 13
9874: PUSH
9875: LD_INT 1
9877: ARRAY
9878: PUSH
9879: LD_INT 5
9881: PLUS
9882: PPUSH
9883: CALL_OW 250
9887: PPUSH
9888: LD_VAR 0 13
9892: PUSH
9893: LD_INT 1
9895: ARRAY
9896: PPUSH
9897: CALL_OW 251
9901: PPUSH
9902: CALL_OW 114
9906: GO 9862
9908: POP
9909: POP
// end else
9910: GO 9977
// begin building = getBuildings ( b_lab , s ) ;
9912: LD_ADDR_VAR 0 12
9916: PUSH
9917: LD_INT 6
9919: PPUSH
9920: LD_VAR 0 1
9924: PPUSH
9925: CALL 8790 0 2
9929: ST_TO_ADDR
// if scientist then
9930: LD_VAR 0 6
9934: IFFALSE 9977
// if building then
9936: LD_VAR 0 12
9940: IFFALSE 9977
// for i in scientist do
9942: LD_ADDR_VAR 0 7
9946: PUSH
9947: LD_VAR 0 6
9951: PUSH
9952: FOR_IN
9953: IFFALSE 9975
// comEnterUnit ( i , building [ 1 ] ) ;
9955: LD_VAR 0 7
9959: PPUSH
9960: LD_VAR 0 12
9964: PUSH
9965: LD_INT 1
9967: ARRAY
9968: PPUSH
9969: CALL_OW 120
9973: GO 9952
9975: POP
9976: POP
// end ; AIRoute = [ [ 0 ] , [ 1 , b_armoury , [ 20 , 0 , 4 ] ] , [ 2 , 3 ] , [ 4 , b_armoury ] , [ 2 , 5 ] , [ 2 , 10 ] , [ 2 , 6 ] , [ 2 , 3 ] , [ 2 , 4 ] , [ 3 , 1 ] , [ 3 , 2 ] , [ 2 , 3 ] ] ;
9977: LD_ADDR_VAR 0 10
9981: PUSH
9982: LD_INT 0
9984: PUSH
9985: EMPTY
9986: LIST
9987: PUSH
9988: LD_INT 1
9990: PUSH
9991: LD_INT 4
9993: PUSH
9994: LD_INT 20
9996: PUSH
9997: LD_INT 0
9999: PUSH
10000: LD_INT 4
10002: PUSH
10003: EMPTY
10004: LIST
10005: LIST
10006: LIST
10007: PUSH
10008: EMPTY
10009: LIST
10010: LIST
10011: LIST
10012: PUSH
10013: LD_INT 2
10015: PUSH
10016: LD_INT 3
10018: PUSH
10019: EMPTY
10020: LIST
10021: LIST
10022: PUSH
10023: LD_INT 4
10025: PUSH
10026: LD_INT 4
10028: PUSH
10029: EMPTY
10030: LIST
10031: LIST
10032: PUSH
10033: LD_INT 2
10035: PUSH
10036: LD_INT 5
10038: PUSH
10039: EMPTY
10040: LIST
10041: LIST
10042: PUSH
10043: LD_INT 2
10045: PUSH
10046: LD_INT 10
10048: PUSH
10049: EMPTY
10050: LIST
10051: LIST
10052: PUSH
10053: LD_INT 2
10055: PUSH
10056: LD_INT 6
10058: PUSH
10059: EMPTY
10060: LIST
10061: LIST
10062: PUSH
10063: LD_INT 2
10065: PUSH
10066: LD_INT 3
10068: PUSH
10069: EMPTY
10070: LIST
10071: LIST
10072: PUSH
10073: LD_INT 2
10075: PUSH
10076: LD_INT 4
10078: PUSH
10079: EMPTY
10080: LIST
10081: LIST
10082: PUSH
10083: LD_INT 3
10085: PUSH
10086: LD_INT 1
10088: PUSH
10089: EMPTY
10090: LIST
10091: LIST
10092: PUSH
10093: LD_INT 3
10095: PUSH
10096: LD_INT 2
10098: PUSH
10099: EMPTY
10100: LIST
10101: LIST
10102: PUSH
10103: LD_INT 2
10105: PUSH
10106: LD_INT 3
10108: PUSH
10109: EMPTY
10110: LIST
10111: LIST
10112: PUSH
10113: EMPTY
10114: LIST
10115: LIST
10116: LIST
10117: LIST
10118: LIST
10119: LIST
10120: LIST
10121: LIST
10122: LIST
10123: LIST
10124: LIST
10125: LIST
10126: ST_TO_ADDR
// isRouteDone = [ 1 ] ;
10127: LD_ADDR_VAR 0 11
10131: PUSH
10132: LD_INT 1
10134: PUSH
10135: EMPTY
10136: LIST
10137: ST_TO_ADDR
// for i = 2 to AIRoute do
10138: LD_ADDR_VAR 0 7
10142: PUSH
10143: DOUBLE
10144: LD_INT 2
10146: DEC
10147: ST_TO_ADDR
10148: LD_VAR 0 10
10152: PUSH
10153: FOR_TO
10154: IFFALSE 10181
// isRouteDone = Replace ( isRouteDone , i , 0 ) ;
10156: LD_ADDR_VAR 0 11
10160: PUSH
10161: LD_VAR 0 11
10165: PPUSH
10166: LD_VAR 0 7
10170: PPUSH
10171: LD_INT 0
10173: PPUSH
10174: CALL_OW 1
10178: ST_TO_ADDR
10179: GO 10153
10181: POP
10182: POP
// for i = 2 to AIRoute do
10183: LD_ADDR_VAR 0 7
10187: PUSH
10188: DOUBLE
10189: LD_INT 2
10191: DEC
10192: ST_TO_ADDR
10193: LD_VAR 0 10
10197: PUSH
10198: FOR_TO
10199: IFFALSE 11206
// begin wait ( 0 0$0.25 ) ;
10201: LD_INT 9
10203: PPUSH
10204: CALL_OW 67
// if isRouteDone [ i - 1 ] = 0 and AIRoute [ i - 1 ] [ 1 ] <> 2 and AIRoute [ i - 1 ] [ 1 ] <> 3 then
10208: LD_VAR 0 11
10212: PUSH
10213: LD_VAR 0 7
10217: PUSH
10218: LD_INT 1
10220: MINUS
10221: ARRAY
10222: PUSH
10223: LD_INT 0
10225: EQUAL
10226: PUSH
10227: LD_VAR 0 10
10231: PUSH
10232: LD_VAR 0 7
10236: PUSH
10237: LD_INT 1
10239: MINUS
10240: ARRAY
10241: PUSH
10242: LD_INT 1
10244: ARRAY
10245: PUSH
10246: LD_INT 2
10248: NONEQUAL
10249: AND
10250: PUSH
10251: LD_VAR 0 10
10255: PUSH
10256: LD_VAR 0 7
10260: PUSH
10261: LD_INT 1
10263: MINUS
10264: ARRAY
10265: PUSH
10266: LD_INT 1
10268: ARRAY
10269: PUSH
10270: LD_INT 3
10272: NONEQUAL
10273: AND
10274: IFFALSE 10290
// i = i - 1 ;
10276: LD_ADDR_VAR 0 7
10280: PUSH
10281: LD_VAR 0 7
10285: PUSH
10286: LD_INT 1
10288: MINUS
10289: ST_TO_ADDR
// case AIRoute [ i ] [ 1 ] of 1 :
10290: LD_VAR 0 10
10294: PUSH
10295: LD_VAR 0 7
10299: ARRAY
10300: PUSH
10301: LD_INT 1
10303: ARRAY
10304: PUSH
10305: LD_INT 1
10307: DOUBLE
10308: EQUAL
10309: IFTRUE 10313
10311: GO 10531
10313: POP
// begin building = getBuildings ( AIRoute [ i ] [ 2 ] , s ) ^ getUpgradedBuildings ( AIRoute [ i ] [ 2 ] , s ) ;
10314: LD_ADDR_VAR 0 12
10318: PUSH
10319: LD_VAR 0 10
10323: PUSH
10324: LD_VAR 0 7
10328: ARRAY
10329: PUSH
10330: LD_INT 2
10332: ARRAY
10333: PPUSH
10334: LD_VAR 0 1
10338: PPUSH
10339: CALL 8790 0 2
10343: PUSH
10344: LD_VAR 0 10
10348: PUSH
10349: LD_VAR 0 7
10353: ARRAY
10354: PUSH
10355: LD_INT 2
10357: ARRAY
10358: PPUSH
10359: LD_VAR 0 1
10363: PPUSH
10364: CALL 8986 0 2
10368: ADD
10369: ST_TO_ADDR
// if building then
10370: LD_VAR 0 12
10374: IFFALSE 10399
// isRouteDone = Replace ( isRouteDone , i , 1 ) ;
10376: LD_ADDR_VAR 0 11
10380: PUSH
10381: LD_VAR 0 11
10385: PPUSH
10386: LD_VAR 0 7
10390: PPUSH
10391: LD_INT 1
10393: PPUSH
10394: CALL_OW 1
10398: ST_TO_ADDR
// if not building and engineer and depot then
10399: LD_VAR 0 12
10403: NOT
10404: PUSH
10405: LD_VAR 0 4
10409: AND
10410: PUSH
10411: LD_VAR 0 13
10415: AND
10416: IFFALSE 10529
// ComBuild ( engineer , AIRoute [ i ] [ 2 ] , getX ( depot [ 1 ] ) + AIRoute [ i ] [ 3 ] [ 1 ] , getY ( depot [ 1 ] ) + AIRoute [ i ] [ 3 ] [ 2 ] , AIRoute [ i ] [ 3 ] [ 3 ] ) ;
10418: LD_VAR 0 4
10422: PPUSH
10423: LD_VAR 0 10
10427: PUSH
10428: LD_VAR 0 7
10432: ARRAY
10433: PUSH
10434: LD_INT 2
10436: ARRAY
10437: PPUSH
10438: LD_VAR 0 13
10442: PUSH
10443: LD_INT 1
10445: ARRAY
10446: PPUSH
10447: CALL_OW 250
10451: PUSH
10452: LD_VAR 0 10
10456: PUSH
10457: LD_VAR 0 7
10461: ARRAY
10462: PUSH
10463: LD_INT 3
10465: ARRAY
10466: PUSH
10467: LD_INT 1
10469: ARRAY
10470: PLUS
10471: PPUSH
10472: LD_VAR 0 13
10476: PUSH
10477: LD_INT 1
10479: ARRAY
10480: PPUSH
10481: CALL_OW 251
10485: PUSH
10486: LD_VAR 0 10
10490: PUSH
10491: LD_VAR 0 7
10495: ARRAY
10496: PUSH
10497: LD_INT 3
10499: ARRAY
10500: PUSH
10501: LD_INT 2
10503: ARRAY
10504: PLUS
10505: PPUSH
10506: LD_VAR 0 10
10510: PUSH
10511: LD_VAR 0 7
10515: ARRAY
10516: PUSH
10517: LD_INT 3
10519: ARRAY
10520: PUSH
10521: LD_INT 3
10523: ARRAY
10524: PPUSH
10525: CALL_OW 145
// end ; 2 :
10529: GO 11204
10531: LD_INT 2
10533: DOUBLE
10534: EQUAL
10535: IFTRUE 10539
10537: GO 10861
10539: POP
// begin if AISettings [ 1 ] = 5 and AIRoute [ i ] [ 2 ] = 5 then
10540: LD_EXP 13
10544: PUSH
10545: LD_INT 1
10547: ARRAY
10548: PUSH
10549: LD_INT 5
10551: EQUAL
10552: PUSH
10553: LD_VAR 0 10
10557: PUSH
10558: LD_VAR 0 7
10562: ARRAY
10563: PUSH
10564: LD_INT 2
10566: ARRAY
10567: PUSH
10568: LD_INT 5
10570: EQUAL
10571: AND
10572: IFFALSE 10604
// AIRoute = Replace ( AIRoute , i , [ 2 , 3 ] ) ;
10574: LD_ADDR_VAR 0 10
10578: PUSH
10579: LD_VAR 0 10
10583: PPUSH
10584: LD_VAR 0 7
10588: PPUSH
10589: LD_INT 2
10591: PUSH
10592: LD_INT 3
10594: PUSH
10595: EMPTY
10596: LIST
10597: LIST
10598: PPUSH
10599: CALL_OW 1
10603: ST_TO_ADDR
// if AISettings [ 2 ] = 9 and AIRoute [ i ] [ 2 ] = 6 then
10604: LD_EXP 13
10608: PUSH
10609: LD_INT 2
10611: ARRAY
10612: PUSH
10613: LD_INT 9
10615: EQUAL
10616: PUSH
10617: LD_VAR 0 10
10621: PUSH
10622: LD_VAR 0 7
10626: ARRAY
10627: PUSH
10628: LD_INT 2
10630: ARRAY
10631: PUSH
10632: LD_INT 6
10634: EQUAL
10635: AND
10636: IFFALSE 10668
// AIRoute = Replace ( AIRoute , i , [ 2 , 3 ] ) ;
10638: LD_ADDR_VAR 0 10
10642: PUSH
10643: LD_VAR 0 10
10647: PPUSH
10648: LD_VAR 0 7
10652: PPUSH
10653: LD_INT 2
10655: PUSH
10656: LD_INT 3
10658: PUSH
10659: EMPTY
10660: LIST
10661: LIST
10662: PPUSH
10663: CALL_OW 1
10667: ST_TO_ADDR
// if AISettings [ 3 ] = 9 and AIRoute [ i ] [ 2 ] = 7 then
10668: LD_EXP 13
10672: PUSH
10673: LD_INT 3
10675: ARRAY
10676: PUSH
10677: LD_INT 9
10679: EQUAL
10680: PUSH
10681: LD_VAR 0 10
10685: PUSH
10686: LD_VAR 0 7
10690: ARRAY
10691: PUSH
10692: LD_INT 2
10694: ARRAY
10695: PUSH
10696: LD_INT 7
10698: EQUAL
10699: AND
10700: IFFALSE 10732
// AIRoute = Replace ( AIRoute , i , [ 2 , 3 ] ) ;
10702: LD_ADDR_VAR 0 10
10706: PUSH
10707: LD_VAR 0 10
10711: PPUSH
10712: LD_VAR 0 7
10716: PPUSH
10717: LD_INT 2
10719: PUSH
10720: LD_INT 3
10722: PUSH
10723: EMPTY
10724: LIST
10725: LIST
10726: PPUSH
10727: CALL_OW 1
10731: ST_TO_ADDR
// if AISettings [ 3 ] >= 3 and AIRoute [ i ] [ 2 ] = 10 then
10732: LD_EXP 13
10736: PUSH
10737: LD_INT 3
10739: ARRAY
10740: PUSH
10741: LD_INT 3
10743: GREATEREQUAL
10744: PUSH
10745: LD_VAR 0 10
10749: PUSH
10750: LD_VAR 0 7
10754: ARRAY
10755: PUSH
10756: LD_INT 2
10758: ARRAY
10759: PUSH
10760: LD_INT 10
10762: EQUAL
10763: AND
10764: IFFALSE 10796
// AIRoute = Replace ( AIRoute , i , [ 2 , 3 ] ) ;
10766: LD_ADDR_VAR 0 10
10770: PUSH
10771: LD_VAR 0 10
10775: PPUSH
10776: LD_VAR 0 7
10780: PPUSH
10781: LD_INT 2
10783: PUSH
10784: LD_INT 3
10786: PUSH
10787: EMPTY
10788: LIST
10789: LIST
10790: PPUSH
10791: CALL_OW 1
10795: ST_TO_ADDR
// if isRouteDone [ i - 1 ] then
10796: LD_VAR 0 11
10800: PUSH
10801: LD_VAR 0 7
10805: PUSH
10806: LD_INT 1
10808: MINUS
10809: ARRAY
10810: IFFALSE 10836
// AIBuy ( AIRoute [ i ] [ 2 ] , s ) ;
10812: LD_VAR 0 10
10816: PUSH
10817: LD_VAR 0 7
10821: ARRAY
10822: PUSH
10823: LD_INT 2
10825: ARRAY
10826: PPUSH
10827: LD_VAR 0 1
10831: PPUSH
10832: CALL 11220 0 2
// isRouteDone = Replace ( isRouteDone , i , 1 ) ;
10836: LD_ADDR_VAR 0 11
10840: PUSH
10841: LD_VAR 0 11
10845: PPUSH
10846: LD_VAR 0 7
10850: PPUSH
10851: LD_INT 1
10853: PPUSH
10854: CALL_OW 1
10858: ST_TO_ADDR
// end ; 3 :
10859: GO 11204
10861: LD_INT 3
10863: DOUBLE
10864: EQUAL
10865: IFTRUE 10869
10867: GO 11085
10869: POP
// begin res = GetResources ( depot ) ;
10870: LD_ADDR_VAR 0 14
10874: PUSH
10875: LD_VAR 0 13
10879: PPUSH
10880: CALL_OW 279
10884: ST_TO_ADDR
// if not res then
10885: LD_VAR 0 14
10889: NOT
10890: IFFALSE 10926
// for k = 1 to 3 do
10892: LD_ADDR_VAR 0 9
10896: PUSH
10897: DOUBLE
10898: LD_INT 1
10900: DEC
10901: ST_TO_ADDR
10902: LD_INT 3
10904: PUSH
10905: FOR_TO
10906: IFFALSE 10924
// res = res ^ 0 ;
10908: LD_ADDR_VAR 0 14
10912: PUSH
10913: LD_VAR 0 14
10917: PUSH
10918: LD_INT 0
10920: ADD
10921: ST_TO_ADDR
10922: GO 10905
10924: POP
10925: POP
// if res = 1 then
10926: LD_VAR 0 14
10930: PUSH
10931: LD_INT 1
10933: EQUAL
10934: IFFALSE 10970
// for k = 1 to 2 do
10936: LD_ADDR_VAR 0 9
10940: PUSH
10941: DOUBLE
10942: LD_INT 1
10944: DEC
10945: ST_TO_ADDR
10946: LD_INT 2
10948: PUSH
10949: FOR_TO
10950: IFFALSE 10968
// res = res ^ 0 ;
10952: LD_ADDR_VAR 0 14
10956: PUSH
10957: LD_VAR 0 14
10961: PUSH
10962: LD_INT 0
10964: ADD
10965: ST_TO_ADDR
10966: GO 10949
10968: POP
10969: POP
// if res = 2 then
10970: LD_VAR 0 14
10974: PUSH
10975: LD_INT 2
10977: EQUAL
10978: IFFALSE 10994
// res = res ^ 0 ;
10980: LD_ADDR_VAR 0 14
10984: PUSH
10985: LD_VAR 0 14
10989: PUSH
10990: LD_INT 0
10992: ADD
10993: ST_TO_ADDR
// if AIRoute [ i ] [ 2 ] = 1 then
10994: LD_VAR 0 10
10998: PUSH
10999: LD_VAR 0 7
11003: ARRAY
11004: PUSH
11005: LD_INT 2
11007: ARRAY
11008: PUSH
11009: LD_INT 1
11011: EQUAL
11012: IFFALSE 11060
// if res [ 1 ] >= 1760 then
11014: LD_VAR 0 14
11018: PUSH
11019: LD_INT 1
11021: ARRAY
11022: PUSH
11023: LD_INT 1760
11025: GREATEREQUAL
11026: IFFALSE 11060
// for i = 1 to 176 do
11028: LD_ADDR_VAR 0 7
11032: PUSH
11033: DOUBLE
11034: LD_INT 1
11036: DEC
11037: ST_TO_ADDR
11038: LD_INT 176
11040: PUSH
11041: FOR_TO
11042: IFFALSE 11058
// AIBuy ( 1 , s ) ;
11044: LD_INT 1
11046: PPUSH
11047: LD_VAR 0 1
11051: PPUSH
11052: CALL 11220 0 2
11056: GO 11041
11058: POP
11059: POP
// isRouteDone = Replace ( isRouteDone , i , 1 ) ;
11060: LD_ADDR_VAR 0 11
11064: PUSH
11065: LD_VAR 0 11
11069: PPUSH
11070: LD_VAR 0 7
11074: PPUSH
11075: LD_INT 1
11077: PPUSH
11078: CALL_OW 1
11082: ST_TO_ADDR
// end ; 4 :
11083: GO 11204
11085: LD_INT 4
11087: DOUBLE
11088: EQUAL
11089: IFTRUE 11093
11091: GO 11203
11093: POP
// begin building = getUpgradedBuildings ( AIRoute [ i ] [ 2 ] , s ) ;
11094: LD_ADDR_VAR 0 12
11098: PUSH
11099: LD_VAR 0 10
11103: PUSH
11104: LD_VAR 0 7
11108: ARRAY
11109: PUSH
11110: LD_INT 2
11112: ARRAY
11113: PPUSH
11114: LD_VAR 0 1
11118: PPUSH
11119: CALL 8986 0 2
11123: ST_TO_ADDR
// if building then
11124: LD_VAR 0 12
11128: IFFALSE 11153
// isRouteDone = Replace ( isRouteDone , i , 1 ) ;
11130: LD_ADDR_VAR 0 11
11134: PUSH
11135: LD_VAR 0 11
11139: PPUSH
11140: LD_VAR 0 7
11144: PPUSH
11145: LD_INT 1
11147: PPUSH
11148: CALL_OW 1
11152: ST_TO_ADDR
// if not building and engineer and depot then
11153: LD_VAR 0 12
11157: NOT
11158: PUSH
11159: LD_VAR 0 4
11163: AND
11164: PUSH
11165: LD_VAR 0 13
11169: AND
11170: IFFALSE 11201
// ComUpgrade ( getBuildings ( AIRoute [ i ] [ 2 ] , s ) ) ;
11172: LD_VAR 0 10
11176: PUSH
11177: LD_VAR 0 7
11181: ARRAY
11182: PUSH
11183: LD_INT 2
11185: ARRAY
11186: PPUSH
11187: LD_VAR 0 1
11191: PPUSH
11192: CALL 8790 0 2
11196: PPUSH
11197: CALL_OW 146
// end ; end ;
11201: GO 11204
11203: POP
// end ;
11204: GO 10198
11206: POP
11207: POP
// wait ( 0 0$0.4 ) ;
11208: LD_INT 14
11210: PPUSH
11211: CALL_OW 67
// end ;
11215: LD_VAR 0 2
11219: RET
// export function AIBuy ( n , s ) ; var o , p , base , res , z , w , id , i , position ; begin
11220: LD_INT 0
11222: PPUSH
11223: PPUSH
11224: PPUSH
11225: PPUSH
11226: PPUSH
11227: PPUSH
11228: PPUSH
11229: PPUSH
11230: PPUSH
11231: PPUSH
// o = [ 42 , 42 , 42 , 42 , 43 , 44 , 45 , 46 , 48 ] ;
11232: LD_ADDR_VAR 0 4
11236: PUSH
11237: LD_INT 42
11239: PUSH
11240: LD_INT 42
11242: PUSH
11243: LD_INT 42
11245: PUSH
11246: LD_INT 42
11248: PUSH
11249: LD_INT 43
11251: PUSH
11252: LD_INT 44
11254: PUSH
11255: LD_INT 45
11257: PUSH
11258: LD_INT 46
11260: PUSH
11261: LD_INT 48
11263: PUSH
11264: EMPTY
11265: LIST
11266: LIST
11267: LIST
11268: LIST
11269: LIST
11270: LIST
11271: LIST
11272: LIST
11273: LIST
11274: ST_TO_ADDR
// p = [ 21 , 22 , 23 , 24 , 24 , 24 , 24 , 24 , 24 ] ;
11275: LD_ADDR_VAR 0 5
11279: PUSH
11280: LD_INT 21
11282: PUSH
11283: LD_INT 22
11285: PUSH
11286: LD_INT 23
11288: PUSH
11289: LD_INT 24
11291: PUSH
11292: LD_INT 24
11294: PUSH
11295: LD_INT 24
11297: PUSH
11298: LD_INT 24
11300: PUSH
11301: LD_INT 24
11303: PUSH
11304: LD_INT 24
11306: PUSH
11307: EMPTY
11308: LIST
11309: LIST
11310: LIST
11311: LIST
11312: LIST
11313: LIST
11314: LIST
11315: LIST
11316: LIST
11317: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_side , s ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
11318: LD_ADDR_VAR 0 6
11322: PUSH
11323: LD_INT 22
11325: PUSH
11326: LD_VAR 0 2
11330: PUSH
11331: EMPTY
11332: LIST
11333: LIST
11334: PUSH
11335: LD_INT 2
11337: PUSH
11338: LD_INT 30
11340: PUSH
11341: LD_INT 0
11343: PUSH
11344: EMPTY
11345: LIST
11346: LIST
11347: PUSH
11348: LD_INT 30
11350: PUSH
11351: LD_INT 1
11353: PUSH
11354: EMPTY
11355: LIST
11356: LIST
11357: PUSH
11358: EMPTY
11359: LIST
11360: LIST
11361: LIST
11362: PUSH
11363: EMPTY
11364: LIST
11365: LIST
11366: PPUSH
11367: CALL_OW 69
11371: ST_TO_ADDR
// i = 1 ;
11372: LD_ADDR_VAR 0 11
11376: PUSH
11377: LD_INT 1
11379: ST_TO_ADDR
// if base then
11380: LD_VAR 0 6
11384: IFFALSE 11420
// begin base = GetBase ( base [ 1 ] ) ;
11386: LD_ADDR_VAR 0 6
11390: PUSH
11391: LD_VAR 0 6
11395: PUSH
11396: LD_INT 1
11398: ARRAY
11399: PPUSH
11400: CALL_OW 274
11404: ST_TO_ADDR
// res = GetResources ( base ) ;
11405: LD_ADDR_VAR 0 7
11409: PUSH
11410: LD_VAR 0 6
11414: PPUSH
11415: CALL_OW 279
11419: ST_TO_ADDR
// end ; if not res then
11420: LD_VAR 0 7
11424: NOT
11425: IFFALSE 11461
// for z = 1 to 3 do
11427: LD_ADDR_VAR 0 8
11431: PUSH
11432: DOUBLE
11433: LD_INT 1
11435: DEC
11436: ST_TO_ADDR
11437: LD_INT 3
11439: PUSH
11440: FOR_TO
11441: IFFALSE 11459
// res = res ^ 0 ;
11443: LD_ADDR_VAR 0 7
11447: PUSH
11448: LD_VAR 0 7
11452: PUSH
11453: LD_INT 0
11455: ADD
11456: ST_TO_ADDR
11457: GO 11440
11459: POP
11460: POP
// if res = 1 then
11461: LD_VAR 0 7
11465: PUSH
11466: LD_INT 1
11468: EQUAL
11469: IFFALSE 11505
// for z = 1 to 2 do
11471: LD_ADDR_VAR 0 8
11475: PUSH
11476: DOUBLE
11477: LD_INT 1
11479: DEC
11480: ST_TO_ADDR
11481: LD_INT 2
11483: PUSH
11484: FOR_TO
11485: IFFALSE 11503
// res = res ^ 0 ;
11487: LD_ADDR_VAR 0 7
11491: PUSH
11492: LD_VAR 0 7
11496: PUSH
11497: LD_INT 0
11499: ADD
11500: ST_TO_ADDR
11501: GO 11484
11503: POP
11504: POP
// if res = 2 then
11505: LD_VAR 0 7
11509: PUSH
11510: LD_INT 2
11512: EQUAL
11513: IFFALSE 11529
// res = res ^ 0 ;
11515: LD_ADDR_VAR 0 7
11519: PUSH
11520: LD_VAR 0 7
11524: PUSH
11525: LD_INT 0
11527: ADD
11528: ST_TO_ADDR
// if req [ n ] [ 3 ] <> 0 then
11529: LD_EXP 9
11533: PUSH
11534: LD_VAR 0 1
11538: ARRAY
11539: PUSH
11540: LD_INT 3
11542: ARRAY
11543: PUSH
11544: LD_INT 0
11546: NONEQUAL
11547: IFFALSE 11707
// begin if res [ req [ n ] [ 2 ] ] >= req [ n ] [ 1 ] then
11549: LD_VAR 0 7
11553: PUSH
11554: LD_EXP 9
11558: PUSH
11559: LD_VAR 0 1
11563: ARRAY
11564: PUSH
11565: LD_INT 2
11567: ARRAY
11568: ARRAY
11569: PUSH
11570: LD_EXP 9
11574: PUSH
11575: LD_VAR 0 1
11579: ARRAY
11580: PUSH
11581: LD_INT 1
11583: ARRAY
11584: GREATEREQUAL
11585: IFFALSE 11705
// begin SetResourceType ( base , req [ n ] [ 3 ] , res [ req [ n ] [ 3 ] ] + 1 ) ;
11587: LD_VAR 0 6
11591: PPUSH
11592: LD_EXP 9
11596: PUSH
11597: LD_VAR 0 1
11601: ARRAY
11602: PUSH
11603: LD_INT 3
11605: ARRAY
11606: PPUSH
11607: LD_VAR 0 7
11611: PUSH
11612: LD_EXP 9
11616: PUSH
11617: LD_VAR 0 1
11621: ARRAY
11622: PUSH
11623: LD_INT 3
11625: ARRAY
11626: ARRAY
11627: PUSH
11628: LD_INT 1
11630: PLUS
11631: PPUSH
11632: CALL_OW 277
// SetResourceType ( base , req [ n ] [ 2 ] , res [ req [ n ] [ 2 ] ] - req [ n ] [ 1 ] ) ;
11636: LD_VAR 0 6
11640: PPUSH
11641: LD_EXP 9
11645: PUSH
11646: LD_VAR 0 1
11650: ARRAY
11651: PUSH
11652: LD_INT 2
11654: ARRAY
11655: PPUSH
11656: LD_VAR 0 7
11660: PUSH
11661: LD_EXP 9
11665: PUSH
11666: LD_VAR 0 1
11670: ARRAY
11671: PUSH
11672: LD_INT 2
11674: ARRAY
11675: ARRAY
11676: PUSH
11677: LD_EXP 9
11681: PUSH
11682: LD_VAR 0 1
11686: ARRAY
11687: PUSH
11688: LD_INT 1
11690: ARRAY
11691: MINUS
11692: PPUSH
11693: CALL_OW 277
// i := 0 ;
11697: LD_ADDR_VAR 0 11
11701: PUSH
11702: LD_INT 0
11704: ST_TO_ADDR
// end ; end else
11705: GO 11816
// if res [ req [ n ] [ 2 ] ] >= req [ n ] [ 1 ] then
11707: LD_VAR 0 7
11711: PUSH
11712: LD_EXP 9
11716: PUSH
11717: LD_VAR 0 1
11721: ARRAY
11722: PUSH
11723: LD_INT 2
11725: ARRAY
11726: ARRAY
11727: PUSH
11728: LD_EXP 9
11732: PUSH
11733: LD_VAR 0 1
11737: ARRAY
11738: PUSH
11739: LD_INT 1
11741: ARRAY
11742: GREATEREQUAL
11743: IFFALSE 11808
// SetResourceType ( base , req [ n ] [ 2 ] , res [ req [ n ] [ 2 ] ] - req [ n ] [ 1 ] ) else
11745: LD_VAR 0 6
11749: PPUSH
11750: LD_EXP 9
11754: PUSH
11755: LD_VAR 0 1
11759: ARRAY
11760: PUSH
11761: LD_INT 2
11763: ARRAY
11764: PPUSH
11765: LD_VAR 0 7
11769: PUSH
11770: LD_EXP 9
11774: PUSH
11775: LD_VAR 0 1
11779: ARRAY
11780: PUSH
11781: LD_INT 2
11783: ARRAY
11784: ARRAY
11785: PUSH
11786: LD_EXP 9
11790: PUSH
11791: LD_VAR 0 1
11795: ARRAY
11796: PUSH
11797: LD_INT 1
11799: ARRAY
11800: MINUS
11801: PPUSH
11802: CALL_OW 277
11806: GO 11816
// i := 0 ;
11808: LD_ADDR_VAR 0 11
11812: PUSH
11813: LD_INT 0
11815: ST_TO_ADDR
// if i <> 0 then
11816: LD_VAR 0 11
11820: PUSH
11821: LD_INT 0
11823: NONEQUAL
11824: IFFALSE 13282
// case n of 3 :
11826: LD_VAR 0 1
11830: PUSH
11831: LD_INT 3
11833: DOUBLE
11834: EQUAL
11835: IFTRUE 11839
11837: GO 11920
11839: POP
// if Setup [ 3 ] = 1 then
11840: LD_EXP 11
11844: PUSH
11845: LD_INT 3
11847: ARRAY
11848: PUSH
11849: LD_INT 1
11851: EQUAL
11852: IFFALSE 11887
// soldiers = Replace ( soldiers , 2 , soldiers [ 2 ] + 1 ) else
11854: LD_ADDR_EXP 10
11858: PUSH
11859: LD_EXP 10
11863: PPUSH
11864: LD_INT 2
11866: PPUSH
11867: LD_EXP 10
11871: PUSH
11872: LD_INT 2
11874: ARRAY
11875: PUSH
11876: LD_INT 1
11878: PLUS
11879: PPUSH
11880: CALL_OW 1
11884: ST_TO_ADDR
11885: GO 11918
// soldiers = Replace ( soldiers , 1 , soldiers [ 1 ] + 1 ) ; 4 :
11887: LD_ADDR_EXP 10
11891: PUSH
11892: LD_EXP 10
11896: PPUSH
11897: LD_INT 1
11899: PPUSH
11900: LD_EXP 10
11904: PUSH
11905: LD_INT 1
11907: ARRAY
11908: PUSH
11909: LD_INT 1
11911: PLUS
11912: PPUSH
11913: CALL_OW 1
11917: ST_TO_ADDR
11918: GO 13282
11920: LD_INT 4
11922: DOUBLE
11923: EQUAL
11924: IFTRUE 11928
11926: GO 11991
11928: POP
// if Setup [ 3 ] = 1 then
11929: LD_EXP 11
11933: PUSH
11934: LD_INT 3
11936: ARRAY
11937: PUSH
11938: LD_INT 1
11940: EQUAL
11941: IFFALSE 11967
// begin position = topspawn ;
11943: LD_ADDR_VAR 0 12
11947: PUSH
11948: LD_INT 6
11950: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
11951: LD_ADDR_OWVAR 20
11955: PUSH
11956: LD_EXP 4
11960: PUSH
11961: LD_INT 2
11963: ARRAY
11964: ST_TO_ADDR
// end else
11965: GO 11989
// begin position = botspawn ;
11967: LD_ADDR_VAR 0 12
11971: PUSH
11972: LD_INT 7
11974: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
11975: LD_ADDR_OWVAR 20
11979: PUSH
11980: LD_EXP 4
11984: PUSH
11985: LD_INT 1
11987: ARRAY
11988: ST_TO_ADDR
// end ; 5 :
11989: GO 13282
11991: LD_INT 5
11993: DOUBLE
11994: EQUAL
11995: IFTRUE 11999
11997: GO 12033
11999: POP
// AISettings := Replace ( AISettings , 1 , AISettings [ 1 ] + 1 ) ; 6 :
12000: LD_ADDR_EXP 13
12004: PUSH
12005: LD_EXP 13
12009: PPUSH
12010: LD_INT 1
12012: PPUSH
12013: LD_EXP 13
12017: PUSH
12018: LD_INT 1
12020: ARRAY
12021: PUSH
12022: LD_INT 1
12024: PLUS
12025: PPUSH
12026: CALL_OW 1
12030: ST_TO_ADDR
12031: GO 13282
12033: LD_INT 6
12035: DOUBLE
12036: EQUAL
12037: IFTRUE 12041
12039: GO 12075
12041: POP
// AISettings := Replace ( AISettings , 2 , AISettings [ 2 ] + 1 ) ; 7 :
12042: LD_ADDR_EXP 13
12046: PUSH
12047: LD_EXP 13
12051: PPUSH
12052: LD_INT 2
12054: PPUSH
12055: LD_EXP 13
12059: PUSH
12060: LD_INT 2
12062: ARRAY
12063: PUSH
12064: LD_INT 1
12066: PLUS
12067: PPUSH
12068: CALL_OW 1
12072: ST_TO_ADDR
12073: GO 13282
12075: LD_INT 7
12077: DOUBLE
12078: EQUAL
12079: IFTRUE 12083
12081: GO 12107
12083: POP
// AISettings := Replace ( AISettings , 3 , 9 ) ; 8 :
12084: LD_ADDR_EXP 13
12088: PUSH
12089: LD_EXP 13
12093: PPUSH
12094: LD_INT 3
12096: PPUSH
12097: LD_INT 9
12099: PPUSH
12100: CALL_OW 1
12104: ST_TO_ADDR
12105: GO 13282
12107: LD_INT 8
12109: DOUBLE
12110: EQUAL
12111: IFTRUE 12115
12113: GO 12178
12115: POP
// if Setup [ 3 ] = 1 then
12116: LD_EXP 11
12120: PUSH
12121: LD_INT 3
12123: ARRAY
12124: PUSH
12125: LD_INT 1
12127: EQUAL
12128: IFFALSE 12154
// begin position = topspawn ;
12130: LD_ADDR_VAR 0 12
12134: PUSH
12135: LD_INT 6
12137: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
12138: LD_ADDR_OWVAR 20
12142: PUSH
12143: LD_EXP 4
12147: PUSH
12148: LD_INT 2
12150: ARRAY
12151: ST_TO_ADDR
// end else
12152: GO 12176
// begin position = botspawn ;
12154: LD_ADDR_VAR 0 12
12158: PUSH
12159: LD_INT 7
12161: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
12162: LD_ADDR_OWVAR 20
12166: PUSH
12167: LD_EXP 4
12171: PUSH
12172: LD_INT 1
12174: ARRAY
12175: ST_TO_ADDR
// end ; 9 :
12176: GO 13282
12178: LD_INT 9
12180: DOUBLE
12181: EQUAL
12182: IFTRUE 12186
12184: GO 12249
12186: POP
// if Setup [ 3 ] = 1 then
12187: LD_EXP 11
12191: PUSH
12192: LD_INT 3
12194: ARRAY
12195: PUSH
12196: LD_INT 1
12198: EQUAL
12199: IFFALSE 12225
// begin position = topspawn ;
12201: LD_ADDR_VAR 0 12
12205: PUSH
12206: LD_INT 6
12208: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
12209: LD_ADDR_OWVAR 20
12213: PUSH
12214: LD_EXP 4
12218: PUSH
12219: LD_INT 2
12221: ARRAY
12222: ST_TO_ADDR
// end else
12223: GO 12247
// begin position = botspawn ;
12225: LD_ADDR_VAR 0 12
12229: PUSH
12230: LD_INT 7
12232: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
12233: LD_ADDR_OWVAR 20
12237: PUSH
12238: LD_EXP 4
12242: PUSH
12243: LD_INT 1
12245: ARRAY
12246: ST_TO_ADDR
// end ; 10 :
12247: GO 13282
12249: LD_INT 10
12251: DOUBLE
12252: EQUAL
12253: IFTRUE 12257
12255: GO 12351
12257: POP
// begin if Setup [ 3 ] = 1 then
12258: LD_EXP 11
12262: PUSH
12263: LD_INT 3
12265: ARRAY
12266: PUSH
12267: LD_INT 1
12269: EQUAL
12270: IFFALSE 12288
// z = freesides [ 2 ] else
12272: LD_ADDR_VAR 0 8
12276: PUSH
12277: LD_EXP 4
12281: PUSH
12282: LD_INT 2
12284: ARRAY
12285: ST_TO_ADDR
12286: GO 12302
// z = freesides [ 1 ] ;
12288: LD_ADDR_VAR 0 8
12292: PUSH
12293: LD_EXP 4
12297: PUSH
12298: LD_INT 1
12300: ARRAY
12301: ST_TO_ADDR
// for w = 1 to AISettings [ 3 ] do
12302: LD_ADDR_VAR 0 9
12306: PUSH
12307: DOUBLE
12308: LD_INT 1
12310: DEC
12311: ST_TO_ADDR
12312: LD_EXP 13
12316: PUSH
12317: LD_INT 3
12319: ARRAY
12320: PUSH
12321: FOR_TO
12322: IFFALSE 12347
// SetTech ( 56 + w , z , 2 ) ;
12324: LD_INT 56
12326: PUSH
12327: LD_VAR 0 9
12331: PLUS
12332: PPUSH
12333: LD_VAR 0 8
12337: PPUSH
12338: LD_INT 2
12340: PPUSH
12341: CALL_OW 322
12345: GO 12321
12347: POP
12348: POP
// end ; 11 :
12349: GO 13282
12351: LD_INT 11
12353: DOUBLE
12354: EQUAL
12355: IFTRUE 12359
12357: GO 12542
12359: POP
// begin uc_side = s ;
12360: LD_ADDR_OWVAR 20
12364: PUSH
12365: LD_VAR 0 2
12369: ST_TO_ADDR
// uc_nation = 0 ;
12370: LD_ADDR_OWVAR 21
12374: PUSH
12375: LD_INT 0
12377: ST_TO_ADDR
// hc_name =  ;
12378: LD_ADDR_OWVAR 26
12382: PUSH
12383: LD_STRING 
12385: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
12386: LD_ADDR_OWVAR 31
12390: PUSH
12391: LD_INT 0
12393: PUSH
12394: LD_INT 0
12396: PUSH
12397: LD_INT 0
12399: PUSH
12400: LD_INT 0
12402: PUSH
12403: EMPTY
12404: LIST
12405: LIST
12406: LIST
12407: LIST
12408: ST_TO_ADDR
// hc_class = 12 ;
12409: LD_ADDR_OWVAR 28
12413: PUSH
12414: LD_INT 12
12416: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
12417: LD_ADDR_OWVAR 27
12421: PUSH
12422: LD_INT 1
12424: PPUSH
12425: LD_INT 2
12427: PPUSH
12428: CALL_OW 12
12432: ST_TO_ADDR
// id = createhuman ;
12433: LD_ADDR_VAR 0 10
12437: PUSH
12438: CALL_OW 44
12442: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
12443: LD_ADDR_VAR 0 6
12447: PUSH
12448: LD_INT 2
12450: PUSH
12451: LD_INT 30
12453: PUSH
12454: LD_INT 0
12456: PUSH
12457: EMPTY
12458: LIST
12459: LIST
12460: PUSH
12461: LD_INT 30
12463: PUSH
12464: LD_INT 1
12466: PUSH
12467: EMPTY
12468: LIST
12469: LIST
12470: PUSH
12471: EMPTY
12472: LIST
12473: LIST
12474: LIST
12475: PUSH
12476: LD_INT 22
12478: PUSH
12479: LD_VAR 0 2
12483: PUSH
12484: EMPTY
12485: LIST
12486: LIST
12487: PUSH
12488: EMPTY
12489: LIST
12490: LIST
12491: PPUSH
12492: CALL_OW 69
12496: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
12497: CALL_OW 44
12501: PPUSH
12502: LD_VAR 0 6
12506: PUSH
12507: LD_INT 1
12509: ARRAY
12510: PPUSH
12511: CALL_OW 250
12515: PPUSH
12516: LD_VAR 0 6
12520: PUSH
12521: LD_INT 1
12523: ARRAY
12524: PPUSH
12525: CALL_OW 251
12529: PPUSH
12530: LD_INT 13
12532: PPUSH
12533: LD_INT 1
12535: PPUSH
12536: CALL_OW 50
// end ; 12 :
12540: GO 13282
12542: LD_INT 12
12544: DOUBLE
12545: EQUAL
12546: IFTRUE 12550
12548: GO 12622
12550: POP
// begin if Setup [ 3 ] = 1 then
12551: LD_EXP 11
12555: PUSH
12556: LD_INT 3
12558: ARRAY
12559: PUSH
12560: LD_INT 1
12562: EQUAL
12563: IFFALSE 12581
// z = freesides [ 2 ] else
12565: LD_ADDR_VAR 0 8
12569: PUSH
12570: LD_EXP 4
12574: PUSH
12575: LD_INT 2
12577: ARRAY
12578: ST_TO_ADDR
12579: GO 12595
// z = freesides [ 1 ] ;
12581: LD_ADDR_VAR 0 8
12585: PUSH
12586: LD_EXP 4
12590: PUSH
12591: LD_INT 1
12593: ARRAY
12594: ST_TO_ADDR
// SetTech ( 31 , z , 2 ) ;
12595: LD_INT 31
12597: PPUSH
12598: LD_VAR 0 8
12602: PPUSH
12603: LD_INT 2
12605: PPUSH
12606: CALL_OW 322
// uc_side = z ;
12610: LD_ADDR_OWVAR 20
12614: PUSH
12615: LD_VAR 0 8
12619: ST_TO_ADDR
// end ; 13 :
12620: GO 13282
12622: LD_INT 13
12624: DOUBLE
12625: EQUAL
12626: IFTRUE 12630
12628: GO 12750
12630: POP
// begin if Setup [ 3 ] = 1 then
12631: LD_EXP 11
12635: PUSH
12636: LD_INT 3
12638: ARRAY
12639: PUSH
12640: LD_INT 1
12642: EQUAL
12643: IFFALSE 12661
// z = freesides [ 2 ] else
12645: LD_ADDR_VAR 0 8
12649: PUSH
12650: LD_EXP 4
12654: PUSH
12655: LD_INT 2
12657: ARRAY
12658: ST_TO_ADDR
12659: GO 12675
// z = freesides [ 1 ] ;
12661: LD_ADDR_VAR 0 8
12665: PUSH
12666: LD_EXP 4
12670: PUSH
12671: LD_INT 1
12673: ARRAY
12674: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_side , z ] , [ f_type , unit_human ] ] ) ;
12675: LD_ADDR_VAR 0 6
12679: PUSH
12680: LD_INT 22
12682: PUSH
12683: LD_VAR 0 8
12687: PUSH
12688: EMPTY
12689: LIST
12690: LIST
12691: PUSH
12692: LD_INT 21
12694: PUSH
12695: LD_INT 1
12697: PUSH
12698: EMPTY
12699: LIST
12700: LIST
12701: PUSH
12702: EMPTY
12703: LIST
12704: LIST
12705: PPUSH
12706: CALL_OW 69
12710: ST_TO_ADDR
// for z = 1 to base do
12711: LD_ADDR_VAR 0 8
12715: PUSH
12716: DOUBLE
12717: LD_INT 1
12719: DEC
12720: ST_TO_ADDR
12721: LD_VAR 0 6
12725: PUSH
12726: FOR_TO
12727: IFFALSE 12746
// DestroyUnit ( base [ i ] ) ;
12729: LD_VAR 0 6
12733: PUSH
12734: LD_VAR 0 11
12738: ARRAY
12739: PPUSH
12740: CALL_OW 65
12744: GO 12726
12746: POP
12747: POP
// end ; 14 :
12748: GO 13282
12750: LD_INT 14
12752: DOUBLE
12753: EQUAL
12754: IFTRUE 12758
12756: GO 13076
12758: POP
// begin base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
12759: LD_ADDR_VAR 0 6
12763: PUSH
12764: LD_INT 2
12766: PUSH
12767: LD_INT 30
12769: PUSH
12770: LD_INT 0
12772: PUSH
12773: EMPTY
12774: LIST
12775: LIST
12776: PUSH
12777: LD_INT 30
12779: PUSH
12780: LD_INT 1
12782: PUSH
12783: EMPTY
12784: LIST
12785: LIST
12786: PUSH
12787: EMPTY
12788: LIST
12789: LIST
12790: LIST
12791: PUSH
12792: LD_INT 22
12794: PUSH
12795: LD_VAR 0 2
12799: PUSH
12800: EMPTY
12801: LIST
12802: LIST
12803: PUSH
12804: EMPTY
12805: LIST
12806: LIST
12807: PPUSH
12808: CALL_OW 69
12812: ST_TO_ADDR
// uc_side = s ;
12813: LD_ADDR_OWVAR 20
12817: PUSH
12818: LD_VAR 0 2
12822: ST_TO_ADDR
// uc_nation = 1 ;
12823: LD_ADDR_OWVAR 21
12827: PUSH
12828: LD_INT 1
12830: ST_TO_ADDR
// bc_type = 27 ;
12831: LD_ADDR_OWVAR 42
12835: PUSH
12836: LD_INT 27
12838: ST_TO_ADDR
// if HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) - 1 ) > 0 then
12839: LD_VAR 0 6
12843: PUSH
12844: LD_INT 1
12846: ARRAY
12847: PPUSH
12848: CALL_OW 250
12852: PUSH
12853: LD_INT 5
12855: MINUS
12856: PPUSH
12857: LD_VAR 0 6
12861: PUSH
12862: LD_INT 1
12864: ARRAY
12865: PPUSH
12866: CALL_OW 251
12870: PUSH
12871: LD_INT 1
12873: MINUS
12874: PPUSH
12875: CALL_OW 428
12879: PUSH
12880: LD_INT 0
12882: GREATER
12883: IFFALSE 12926
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
12885: LD_VAR 0 6
12889: PUSH
12890: LD_INT 1
12892: ARRAY
12893: PPUSH
12894: CALL_OW 250
12898: PUSH
12899: LD_INT 5
12901: MINUS
12902: PPUSH
12903: LD_VAR 0 6
12907: PUSH
12908: LD_INT 1
12910: ARRAY
12911: PPUSH
12912: CALL_OW 251
12916: PPUSH
12917: CALL_OW 428
12921: PPUSH
12922: CALL_OW 65
// if HexInfo ( GetX ( base [ 1 ] ) - 4 , GetY ( base [ 1 ] ) + 1 ) > 0 then
12926: LD_VAR 0 6
12930: PUSH
12931: LD_INT 1
12933: ARRAY
12934: PPUSH
12935: CALL_OW 250
12939: PUSH
12940: LD_INT 4
12942: MINUS
12943: PPUSH
12944: LD_VAR 0 6
12948: PUSH
12949: LD_INT 1
12951: ARRAY
12952: PPUSH
12953: CALL_OW 251
12957: PUSH
12958: LD_INT 1
12960: PLUS
12961: PPUSH
12962: CALL_OW 428
12966: PUSH
12967: LD_INT 0
12969: GREATER
12970: IFFALSE 13013
// DestroyUnit ( HexInfo ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) ) ) ;
12972: LD_VAR 0 6
12976: PUSH
12977: LD_INT 1
12979: ARRAY
12980: PPUSH
12981: CALL_OW 250
12985: PUSH
12986: LD_INT 5
12988: MINUS
12989: PPUSH
12990: LD_VAR 0 6
12994: PUSH
12995: LD_INT 1
12997: ARRAY
12998: PPUSH
12999: CALL_OW 251
13003: PPUSH
13004: CALL_OW 428
13008: PPUSH
13009: CALL_OW 65
// z = CreateAndPlaceBuildingXYD ( GetX ( base [ 1 ] ) - 5 , GetY ( base [ 1 ] ) , 1 ) ;
13013: LD_ADDR_VAR 0 8
13017: PUSH
13018: LD_VAR 0 6
13022: PUSH
13023: LD_INT 1
13025: ARRAY
13026: PPUSH
13027: CALL_OW 250
13031: PUSH
13032: LD_INT 5
13034: MINUS
13035: PPUSH
13036: LD_VAR 0 6
13040: PUSH
13041: LD_INT 1
13043: ARRAY
13044: PPUSH
13045: CALL_OW 251
13049: PPUSH
13050: LD_INT 1
13052: PPUSH
13053: CALL_OW 47
13057: ST_TO_ADDR
// wait ( 0 0$35 ) ;
13058: LD_INT 1225
13060: PPUSH
13061: CALL_OW 67
// DestroyUnit ( z ) ;
13065: LD_VAR 0 8
13069: PPUSH
13070: CALL_OW 65
// end ; 15 :
13074: GO 13282
13076: LD_INT 15
13078: DOUBLE
13079: EQUAL
13080: IFTRUE 13084
13082: GO 13281
13084: POP
// begin uc_side = s ;
13085: LD_ADDR_OWVAR 20
13089: PUSH
13090: LD_VAR 0 2
13094: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
13095: LD_ADDR_OWVAR 21
13099: PUSH
13100: LD_EXP 11
13104: PUSH
13105: LD_INT 2
13107: ARRAY
13108: ST_TO_ADDR
// hc_name =  ;
13109: LD_ADDR_OWVAR 26
13113: PUSH
13114: LD_STRING 
13116: ST_TO_ADDR
// hc_skills = [ 0 , 0 , 0 , 0 ] ;
13117: LD_ADDR_OWVAR 31
13121: PUSH
13122: LD_INT 0
13124: PUSH
13125: LD_INT 0
13127: PUSH
13128: LD_INT 0
13130: PUSH
13131: LD_INT 0
13133: PUSH
13134: EMPTY
13135: LIST
13136: LIST
13137: LIST
13138: LIST
13139: ST_TO_ADDR
// hc_class = rand ( 1 , 4 ) ;
13140: LD_ADDR_OWVAR 28
13144: PUSH
13145: LD_INT 1
13147: PPUSH
13148: LD_INT 4
13150: PPUSH
13151: CALL_OW 12
13155: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
13156: LD_ADDR_OWVAR 27
13160: PUSH
13161: LD_INT 1
13163: PPUSH
13164: LD_INT 2
13166: PPUSH
13167: CALL_OW 12
13171: ST_TO_ADDR
// id = createhuman ;
13172: LD_ADDR_VAR 0 10
13176: PUSH
13177: CALL_OW 44
13181: ST_TO_ADDR
// base = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , s ] ] ) ;
13182: LD_ADDR_VAR 0 6
13186: PUSH
13187: LD_INT 2
13189: PUSH
13190: LD_INT 30
13192: PUSH
13193: LD_INT 0
13195: PUSH
13196: EMPTY
13197: LIST
13198: LIST
13199: PUSH
13200: LD_INT 30
13202: PUSH
13203: LD_INT 1
13205: PUSH
13206: EMPTY
13207: LIST
13208: LIST
13209: PUSH
13210: EMPTY
13211: LIST
13212: LIST
13213: LIST
13214: PUSH
13215: LD_INT 22
13217: PUSH
13218: LD_VAR 0 2
13222: PUSH
13223: EMPTY
13224: LIST
13225: LIST
13226: PUSH
13227: EMPTY
13228: LIST
13229: LIST
13230: PPUSH
13231: CALL_OW 69
13235: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( base [ 1 ] ) , GetY ( base [ 1 ] ) , 13 , true ) ;
13236: CALL_OW 44
13240: PPUSH
13241: LD_VAR 0 6
13245: PUSH
13246: LD_INT 1
13248: ARRAY
13249: PPUSH
13250: CALL_OW 250
13254: PPUSH
13255: LD_VAR 0 6
13259: PUSH
13260: LD_INT 1
13262: ARRAY
13263: PPUSH
13264: CALL_OW 251
13268: PPUSH
13269: LD_INT 13
13271: PPUSH
13272: LD_INT 1
13274: PPUSH
13275: CALL_OW 50
// end ; end ;
13279: GO 13282
13281: POP
// if i <> 0 then
13282: LD_VAR 0 11
13286: PUSH
13287: LD_INT 0
13289: NONEQUAL
13290: IFFALSE 13767
// case n of 3 :
13292: LD_VAR 0 1
13296: PUSH
13297: LD_INT 3
13299: DOUBLE
13300: EQUAL
13301: IFTRUE 13305
13303: GO 13343
13305: POP
// income := Replace ( income , s , income [ s ] + 5 ) ; 4 :
13306: LD_ADDR_EXP 8
13310: PUSH
13311: LD_EXP 8
13315: PPUSH
13316: LD_VAR 0 2
13320: PPUSH
13321: LD_EXP 8
13325: PUSH
13326: LD_VAR 0 2
13330: ARRAY
13331: PUSH
13332: LD_INT 5
13334: PLUS
13335: PPUSH
13336: CALL_OW 1
13340: ST_TO_ADDR
13341: GO 13767
13343: LD_INT 4
13345: DOUBLE
13346: EQUAL
13347: IFTRUE 13351
13349: GO 13480
13351: POP
// begin uc_nation = 3 ;
13352: LD_ADDR_OWVAR 21
13356: PUSH
13357: LD_INT 3
13359: ST_TO_ADDR
// vc_chassis = p [ AISettings [ 2 ] ] ;
13360: LD_ADDR_OWVAR 37
13364: PUSH
13365: LD_VAR 0 5
13369: PUSH
13370: LD_EXP 13
13374: PUSH
13375: LD_INT 2
13377: ARRAY
13378: ARRAY
13379: ST_TO_ADDR
// vc_weapon = o [ AISettings [ 2 ] ] ;
13380: LD_ADDR_OWVAR 40
13384: PUSH
13385: LD_VAR 0 4
13389: PUSH
13390: LD_EXP 13
13394: PUSH
13395: LD_INT 2
13397: ARRAY
13398: ARRAY
13399: ST_TO_ADDR
// vc_engine = 1 ;
13400: LD_ADDR_OWVAR 39
13404: PUSH
13405: LD_INT 1
13407: ST_TO_ADDR
// vc_control = 3 ;
13408: LD_ADDR_OWVAR 38
13412: PUSH
13413: LD_INT 3
13415: ST_TO_ADDR
// id = createvehicle ;
13416: LD_ADDR_VAR 0 10
13420: PUSH
13421: CALL_OW 45
13425: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
13426: LD_VAR 0 10
13430: PPUSH
13431: LD_VAR 0 12
13435: PPUSH
13436: LD_INT 0
13438: PPUSH
13439: CALL_OW 49
// income := Replace ( income , s , income [ s ] + 40 ) ;
13443: LD_ADDR_EXP 8
13447: PUSH
13448: LD_EXP 8
13452: PPUSH
13453: LD_VAR 0 2
13457: PPUSH
13458: LD_EXP 8
13462: PUSH
13463: LD_VAR 0 2
13467: ARRAY
13468: PUSH
13469: LD_INT 40
13471: PLUS
13472: PPUSH
13473: CALL_OW 1
13477: ST_TO_ADDR
// end ; 8 :
13478: GO 13767
13480: LD_INT 8
13482: DOUBLE
13483: EQUAL
13484: IFTRUE 13488
13486: GO 13578
13488: POP
// begin uc_nation = 2 ;
13489: LD_ADDR_OWVAR 21
13493: PUSH
13494: LD_INT 2
13496: ST_TO_ADDR
// vc_chassis = 11 ;
13497: LD_ADDR_OWVAR 37
13501: PUSH
13502: LD_INT 11
13504: ST_TO_ADDR
// vc_weapon = 29 ;
13505: LD_ADDR_OWVAR 40
13509: PUSH
13510: LD_INT 29
13512: ST_TO_ADDR
// vc_engine = 1 ;
13513: LD_ADDR_OWVAR 39
13517: PUSH
13518: LD_INT 1
13520: ST_TO_ADDR
// vc_control = 3 ;
13521: LD_ADDR_OWVAR 38
13525: PUSH
13526: LD_INT 3
13528: ST_TO_ADDR
// for z = 1 to 2 do
13529: LD_ADDR_VAR 0 8
13533: PUSH
13534: DOUBLE
13535: LD_INT 1
13537: DEC
13538: ST_TO_ADDR
13539: LD_INT 2
13541: PUSH
13542: FOR_TO
13543: IFFALSE 13574
// begin id = createvehicle ;
13545: LD_ADDR_VAR 0 10
13549: PUSH
13550: CALL_OW 45
13554: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
13555: LD_VAR 0 10
13559: PPUSH
13560: LD_VAR 0 12
13564: PPUSH
13565: LD_INT 0
13567: PPUSH
13568: CALL_OW 49
// end ;
13572: GO 13542
13574: POP
13575: POP
// end ; 9 :
13576: GO 13767
13578: LD_INT 9
13580: DOUBLE
13581: EQUAL
13582: IFTRUE 13586
13584: GO 13676
13586: POP
// begin uc_nation = 2 ;
13587: LD_ADDR_OWVAR 21
13591: PUSH
13592: LD_INT 2
13594: ST_TO_ADDR
// vc_chassis = 11 ;
13595: LD_ADDR_OWVAR 37
13599: PUSH
13600: LD_INT 11
13602: ST_TO_ADDR
// vc_weapon = 10 ;
13603: LD_ADDR_OWVAR 40
13607: PUSH
13608: LD_INT 10
13610: ST_TO_ADDR
// vc_engine = 1 ;
13611: LD_ADDR_OWVAR 39
13615: PUSH
13616: LD_INT 1
13618: ST_TO_ADDR
// vc_control = 3 ;
13619: LD_ADDR_OWVAR 38
13623: PUSH
13624: LD_INT 3
13626: ST_TO_ADDR
// for z = 1 to 2 do
13627: LD_ADDR_VAR 0 8
13631: PUSH
13632: DOUBLE
13633: LD_INT 1
13635: DEC
13636: ST_TO_ADDR
13637: LD_INT 2
13639: PUSH
13640: FOR_TO
13641: IFFALSE 13672
// begin id = createvehicle ;
13643: LD_ADDR_VAR 0 10
13647: PUSH
13648: CALL_OW 45
13652: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
13653: LD_VAR 0 10
13657: PPUSH
13658: LD_VAR 0 12
13662: PPUSH
13663: LD_INT 0
13665: PPUSH
13666: CALL_OW 49
// end ;
13670: GO 13640
13672: POP
13673: POP
// end ; 12 :
13674: GO 13767
13676: LD_INT 12
13678: DOUBLE
13679: EQUAL
13680: IFTRUE 13684
13682: GO 13766
13684: POP
// begin uc_nation = 2 ;
13685: LD_ADDR_OWVAR 21
13689: PUSH
13690: LD_INT 2
13692: ST_TO_ADDR
// vc_weapon = 49 ;
13693: LD_ADDR_OWVAR 40
13697: PUSH
13698: LD_INT 49
13700: ST_TO_ADDR
// vc_engine = 1 ;
13701: LD_ADDR_OWVAR 39
13705: PUSH
13706: LD_INT 1
13708: ST_TO_ADDR
// vc_control = 3 ;
13709: LD_ADDR_OWVAR 38
13713: PUSH
13714: LD_INT 3
13716: ST_TO_ADDR
// vc_chassis = p [ AISettings [ 2 ] ] ;
13717: LD_ADDR_OWVAR 37
13721: PUSH
13722: LD_VAR 0 5
13726: PUSH
13727: LD_EXP 13
13731: PUSH
13732: LD_INT 2
13734: ARRAY
13735: ARRAY
13736: ST_TO_ADDR
// id = createvehicle ;
13737: LD_ADDR_VAR 0 10
13741: PUSH
13742: CALL_OW 45
13746: ST_TO_ADDR
// PlaceUnitArea ( id , position , false ) ;
13747: LD_VAR 0 10
13751: PPUSH
13752: LD_VAR 0 12
13756: PPUSH
13757: LD_INT 0
13759: PPUSH
13760: CALL_OW 49
// end ; end ;
13764: GO 13767
13766: POP
// result := i ;
13767: LD_ADDR_VAR 0 3
13771: PUSH
13772: LD_VAR 0 11
13776: ST_TO_ADDR
// end ;
13777: LD_VAR 0 3
13781: RET
// every 0 0$02.5 trigger FilterAllUnits ( [ f_inside ] ) do var bs , uns , i , l ;
13782: LD_INT 54
13784: PUSH
13785: EMPTY
13786: LIST
13787: PPUSH
13788: CALL_OW 69
13792: IFFALSE 14309
13794: GO 13796
13796: DISABLE
13797: LD_INT 0
13799: PPUSH
13800: PPUSH
13801: PPUSH
13802: PPUSH
// begin bs = FilterAllUnits ( [ [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] , [ f_btype , b_turret ] ] , [ f_occupied ] ] ) ;
13803: LD_ADDR_VAR 0 1
13807: PUSH
13808: LD_INT 2
13810: PUSH
13811: LD_INT 30
13813: PUSH
13814: LD_INT 4
13816: PUSH
13817: EMPTY
13818: LIST
13819: LIST
13820: PUSH
13821: LD_INT 30
13823: PUSH
13824: LD_INT 5
13826: PUSH
13827: EMPTY
13828: LIST
13829: LIST
13830: PUSH
13831: LD_INT 30
13833: PUSH
13834: LD_INT 31
13836: PUSH
13837: EMPTY
13838: LIST
13839: LIST
13840: PUSH
13841: LD_INT 30
13843: PUSH
13844: LD_INT 33
13846: PUSH
13847: EMPTY
13848: LIST
13849: LIST
13850: PUSH
13851: EMPTY
13852: LIST
13853: LIST
13854: LIST
13855: LIST
13856: LIST
13857: PUSH
13858: LD_INT 59
13860: PUSH
13861: EMPTY
13862: LIST
13863: PUSH
13864: EMPTY
13865: LIST
13866: LIST
13867: PPUSH
13868: CALL_OW 69
13872: ST_TO_ADDR
// if bs then
13873: LD_VAR 0 1
13877: IFFALSE 13943
// for i in bs do
13879: LD_ADDR_VAR 0 3
13883: PUSH
13884: LD_VAR 0 1
13888: PUSH
13889: FOR_IN
13890: IFFALSE 13941
// begin uns = UnitsInside ( i ) ;
13892: LD_ADDR_VAR 0 2
13896: PUSH
13897: LD_VAR 0 3
13901: PPUSH
13902: CALL_OW 313
13906: ST_TO_ADDR
// for l in uns do
13907: LD_ADDR_VAR 0 4
13911: PUSH
13912: LD_VAR 0 2
13916: PUSH
13917: FOR_IN
13918: IFFALSE 13937
// AddExperience ( l , 1 , 11 ) ;
13920: LD_VAR 0 4
13924: PPUSH
13925: LD_INT 1
13927: PPUSH
13928: LD_INT 11
13930: PPUSH
13931: CALL_OW 492
13935: GO 13917
13937: POP
13938: POP
// end ;
13939: GO 13889
13941: POP
13942: POP
// bs = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_occupied ] ] ) ;
13943: LD_ADDR_VAR 0 1
13947: PUSH
13948: LD_INT 2
13950: PUSH
13951: LD_INT 30
13953: PUSH
13954: LD_INT 0
13956: PUSH
13957: EMPTY
13958: LIST
13959: LIST
13960: PUSH
13961: LD_INT 30
13963: PUSH
13964: LD_INT 1
13966: PUSH
13967: EMPTY
13968: LIST
13969: LIST
13970: PUSH
13971: EMPTY
13972: LIST
13973: LIST
13974: LIST
13975: PUSH
13976: LD_INT 59
13978: PUSH
13979: EMPTY
13980: LIST
13981: PUSH
13982: EMPTY
13983: LIST
13984: LIST
13985: PPUSH
13986: CALL_OW 69
13990: ST_TO_ADDR
// if bs then
13991: LD_VAR 0 1
13995: IFFALSE 14061
// for i in bs do
13997: LD_ADDR_VAR 0 3
14001: PUSH
14002: LD_VAR 0 1
14006: PUSH
14007: FOR_IN
14008: IFFALSE 14059
// begin uns = UnitsInside ( i ) ;
14010: LD_ADDR_VAR 0 2
14014: PUSH
14015: LD_VAR 0 3
14019: PPUSH
14020: CALL_OW 313
14024: ST_TO_ADDR
// for l in uns do
14025: LD_ADDR_VAR 0 4
14029: PUSH
14030: LD_VAR 0 2
14034: PUSH
14035: FOR_IN
14036: IFFALSE 14055
// AddExperience ( l , 2 , 11 ) ;
14038: LD_VAR 0 4
14042: PPUSH
14043: LD_INT 2
14045: PPUSH
14046: LD_INT 11
14048: PPUSH
14049: CALL_OW 492
14053: GO 14035
14055: POP
14056: POP
// end ;
14057: GO 14007
14059: POP
14060: POP
// bs = FilterAllUnits ( [ [ f_or , [ f_btype , b_factory ] , [ f_btype , b_workshop ] ] , [ f_occupied ] ] ) ;
14061: LD_ADDR_VAR 0 1
14065: PUSH
14066: LD_INT 2
14068: PUSH
14069: LD_INT 30
14071: PUSH
14072: LD_INT 3
14074: PUSH
14075: EMPTY
14076: LIST
14077: LIST
14078: PUSH
14079: LD_INT 30
14081: PUSH
14082: LD_INT 2
14084: PUSH
14085: EMPTY
14086: LIST
14087: LIST
14088: PUSH
14089: EMPTY
14090: LIST
14091: LIST
14092: LIST
14093: PUSH
14094: LD_INT 59
14096: PUSH
14097: EMPTY
14098: LIST
14099: PUSH
14100: EMPTY
14101: LIST
14102: LIST
14103: PPUSH
14104: CALL_OW 69
14108: ST_TO_ADDR
// if bs then
14109: LD_VAR 0 1
14113: IFFALSE 14179
// for i in bs do
14115: LD_ADDR_VAR 0 3
14119: PUSH
14120: LD_VAR 0 1
14124: PUSH
14125: FOR_IN
14126: IFFALSE 14177
// begin uns = UnitsInside ( i ) ;
14128: LD_ADDR_VAR 0 2
14132: PUSH
14133: LD_VAR 0 3
14137: PPUSH
14138: CALL_OW 313
14142: ST_TO_ADDR
// for l in uns do
14143: LD_ADDR_VAR 0 4
14147: PUSH
14148: LD_VAR 0 2
14152: PUSH
14153: FOR_IN
14154: IFFALSE 14173
// AddExperience ( l , 3 , 11 ) ;
14156: LD_VAR 0 4
14160: PPUSH
14161: LD_INT 3
14163: PPUSH
14164: LD_INT 11
14166: PPUSH
14167: CALL_OW 492
14171: GO 14153
14173: POP
14174: POP
// end ;
14175: GO 14125
14177: POP
14178: POP
// bs = FilterAllUnits ( [ [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] , [ f_occupied ] ] ) ;
14179: LD_ADDR_VAR 0 1
14183: PUSH
14184: LD_INT 2
14186: PUSH
14187: LD_INT 30
14189: PUSH
14190: LD_INT 6
14192: PUSH
14193: EMPTY
14194: LIST
14195: LIST
14196: PUSH
14197: LD_INT 30
14199: PUSH
14200: LD_INT 7
14202: PUSH
14203: EMPTY
14204: LIST
14205: LIST
14206: PUSH
14207: LD_INT 30
14209: PUSH
14210: LD_INT 8
14212: PUSH
14213: EMPTY
14214: LIST
14215: LIST
14216: PUSH
14217: EMPTY
14218: LIST
14219: LIST
14220: LIST
14221: LIST
14222: PUSH
14223: LD_INT 59
14225: PUSH
14226: EMPTY
14227: LIST
14228: PUSH
14229: EMPTY
14230: LIST
14231: LIST
14232: PPUSH
14233: CALL_OW 69
14237: ST_TO_ADDR
// if bs then
14238: LD_VAR 0 1
14242: IFFALSE 14308
// for i in bs do
14244: LD_ADDR_VAR 0 3
14248: PUSH
14249: LD_VAR 0 1
14253: PUSH
14254: FOR_IN
14255: IFFALSE 14306
// begin uns = UnitsInside ( i ) ;
14257: LD_ADDR_VAR 0 2
14261: PUSH
14262: LD_VAR 0 3
14266: PPUSH
14267: CALL_OW 313
14271: ST_TO_ADDR
// for l in uns do
14272: LD_ADDR_VAR 0 4
14276: PUSH
14277: LD_VAR 0 2
14281: PUSH
14282: FOR_IN
14283: IFFALSE 14302
// AddExperience ( l , 4 , 11 ) ;
14285: LD_VAR 0 4
14289: PPUSH
14290: LD_INT 4
14292: PPUSH
14293: LD_INT 11
14295: PPUSH
14296: CALL_OW 492
14300: GO 14282
14302: POP
14303: POP
// end ;
14304: GO 14254
14306: POP
14307: POP
// enable ;
14308: ENABLE
// end ;
14309: PPOPN 4
14311: END
